Доступ к удаленной базе данных mysql из командной строки
У меня есть сервер с Rackspace. Я хочу получить доступ к базе данных из командной строки моего локального компьютера.
Я пытался как:
mysql -u username -h my.application.com -ppassword
Но это дает ошибку:
ОШИБКА 2003 (HY000):
Не удается подключиться к серверу MySQL на my.application.com (10061)
В чем причина этой ошибки и как я могу подключиться к удаленной базе данных?
19 ответов
Чтобы напрямую войти в удаленную консоль mysql, используйте следующую команду:
mysql -u {username} -p {password} \
-h {remote server ip or name} -P {port} \
-D {DB name}
Это приведет вас к консоли MySQL напрямую, переключившись на указанную базу данных.
Просто поместите это на терминал в Ubuntu:
mysql -u username -h host -p
Теперь нажмите En ter
терминал спросит у вас пароль, введите пароль и вы на сервере базы данных
Отредактируйте файл my.cnf:
vi /etc/my.cnf
:
удостоверься что:
bind-address=YOUR-SERVER-IP
и если у вас есть строка:
skip-networking
не забудьте прокомментировать это:
#skip-networking
не забудьте перезапустить:
/etc/init.d/mysqld restart
Для Mac используйте следующую команду:
mysql -u app -h hostaddress -P port -D dbname -p
и затем введите пароль, когда будет предложено.
Попробуйте эту команду mysql -uuser -hhostname -PPORT -ppassword
,
Я столкнулся с подобной ситуацией, и позже, когда mysql порт для хоста был введен с командой, это было решено.
Если вы не хотите использовать ssh tunnel, в my.cnf или mysqld.cnf вы должны изменить 127.0.0.1 с вашим локальным IP-адресом (192.168.1.100), чтобы иметь доступ через Lan. пример ниже:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Ищите bind-адрес в my.cnf или mysqld.cnf
bind-address = 127.0.0.1
и измените 127.0.0.1 на 192.168.1.100 (локальный IP-адрес)
bind-address = 192.168.1.100
Чтобы применить сделанные изменения, необходимо перезапустить сервер MySQL, используя следующую команду.
sudo /etc/init.d/mysql restart
Измените пользовательский корень для локальных сетей (выполните запрос ниже на удаленном сервере, к которому вы хотите иметь доступ)
root@192.168.1.100:~$ mysql -u root -p
..
CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Если вы хотите иметь доступ только с определенного IP-адреса, замените 'root' @ '%' на 'root' @ '(ip address или hostname)'
CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Затем вы можете подключиться:
nobus@xray:~$ mysql -h 192.168.1.100 -u root -p
протестировано на сервере Ubuntu 18.04
- пытаться
telnet 3306
, Если это не открывает соединение, либо есть настройка брандмауэра, либо сервер не слушает (или не работает). - бежать
netstat -an
на сервере, чтобы увидеть, если сервер работает. Возможно, вы не разрешаете удаленные подключения.
См. http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html
Я предполагаю, что у вас установлен MySQL на вашем компьютере. Выполните команду ниже после заполнения недостающих деталей:
mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306
Серверы mysql обычно настроены на прослушивание только localhost (127.0.0.1), где они используются веб-приложениями.
Если это ваш случай, но у вас есть SSH-доступ к вашему серверу, вы можете создать ssh-туннель и подключиться через него.
На вашем локальном компьютере создайте туннель.
ssh -L 3307:127.0.0.1:3306 -N $user@$remote_host
(в этом примере используется локальный порт 3307, если на вашем локальном компьютере также запущен mysql и используется стандартный порт 3306)
Теперь у вас должен быть эль, чтобы связаться с
mysql -u $user -p -h 127.0.0.1 -P 3307
вы можете использовать следующий код для подключения к удаленной базе данных MY SQL
mysql -u {database_user} -p{db_password} -h {host_name} -P {port_number}
mysql -u admin -p'your_password' -h your-company.aws.com -P 3306
Есть простая команда.
mysql -h {hostip} -P {port} -u {username} -p {database}
пример
mysql -h 192.16.16.2 -P 45012 -u rockbook -p rockbookdb
Необходимо проверить, блокируется ли входящий доступ к порту 3306 брандмауэром или нет.
Это решение работало для меня:
На вашей удаленной машине (пример: 295.13.12.53) есть доступ к вашей целевой удаленной машине (на которой работает сервер MySQL)
ssh -f -L 295.13.12.53:3306:10.18.81.36:3306 user@295.13.12.53
Разъяснение:
ssh -f -L your_ssh_mashine_ipaddress:your_ssh_mashine_local_port:target_ipaddress:target_port user@your_ip_address -N
your_ssh_mashine_ipaddress - это не локальный IP-адрес, это IP-адрес, по которому вы используете ssh, в этом примере 295.13.12.53
your_ssh_mashine_local_port -это пользовательский порт, а не 22, в данном примере это 3306.
target_ipaddress - ip машины, с которой вы пытаетесь сбросить БД.
target_port - 3306 это реальный порт для сервера MySQL.
user @ your_ip_address - это учетные данные ssh для подключенной машины ssh
Как только все это будет сделано, вернитесь к своей машине и сделайте следующее:
mysqldump -h 295.13.12.53 -P 3306 -u username -p db_name > dumped_db.sql
Спросит пароль, поставит пароль и вы подключены. Надеюсь это поможет.
Этот работал у меня в mysql 8, замените hostname
с вашим именем хоста и port_number
с вашим port_number, вы также можете изменить свой mysql_user, если он не является root
mysql --host=host_name --port=port_number -u root -p
Попробуйте это, это работает:
mysql -h {имя хоста} -u{имя пользователя} -p{пароль} -N -e "{запрос на выполнение}"
Я тоже получаю ту же ошибку. Но нашел это полезным, создав нового пользователя mysql на удаленном сервере mysql и затем подключившись. Выполните следующую команду на удаленном сервере:
CREATE USER 'openvani'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'openvani'@'localhost WITH GRANT
OPTION;
CREATE USER 'openvani'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'openvani'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Теперь вы можете подключиться к удаленному MySQL с помощью следующей команды.
mysql -u openvani -h 'any ip address'-p
Вот полный пост:
Вы должны поставить свой пароль с 'p'
mysql -u root -u 1.1.1.1 -p'MyPass'
Если вы работаете в Windows, попробуйте Visual Studio Code с плагинами MySQL, простой и интегрированный способ доступа к данным MySQL на компьютере с Windows. И таблицы базы данных перечислены и могут выполнять любые пользовательские запросы.
Если порт указан по умолчанию, для какой-то версии требуется имя базы данных, к которой вы пытаетесь подключиться.
mysql -u <<your username>> -h <<your host>> <<your db name >> -p
Это запросит пароль. Затем введите свой пароль. Если порт не по умолчанию 3306 Тогда:
mysql -u <<your username>> -h <<your host>> -P <<your port>> <<your db name >> -p