Доступ к удаленной базе данных mysql из командной строки

190

У меня есть сервер с Rackspace. Я хочу получить доступ к базе данных из командной строки моего локального компьютера.

Я пытался как:

mysql -u username -h my.application.com -ppassword

Но это дает ошибку:

ОШИБКА 2003 (HY000):

Не удается подключиться к серверу MySQL на my.application.com (10061)

В чем причина этой ошибки и как я могу подключиться к удаленной базе данных?

user1986299
источник
5
10061= Соединение отказано
Дэнни Беккет

Ответы:

294

Чтобы напрямую войти в удаленную консоль mysql, используйте следующую команду:

mysql -u {username} -p'{password}' \
    -h {remote server ip or name} -P {port} \
    -D {DB name}

Например

mysql -u root -p'root' \
        -h 127.0.0.1 -P 3306 \
        -D local

нет пробела после -p, как указано в документации

Это приведет вас к консоли MySQL напрямую, переключившись на указанную базу данных.

31-07-2019 - отредактированный синтаксис

Венкат М
источник
23
Я должен был заключить пароль в одинарные кавычки. то естьmysql -u USERNAME -p'PASSWORD' -h REMOTE_SERVER_IP DB_NAME
Ник Брэди
2
Чтобы указать имя базы данных, нам нужно добавить -D. mysql -u {имя пользователя} -p {пароль} -h {ip удаленного сервера} -D {имя БД}
randeepsp
1
Что делать, если нам нужно указать конкретный порт?
Серж
2
Не работал в терминале на MacOS High Sierra Версия 10.13.3
realPK
33

отредактируйте файл my.cnf:

vi /etc/my.cnf:

удостоверься что:

bind-address=YOUR-SERVER-IP

и если у вас есть строка:

skip-networking

не забудьте прокомментировать это:

#skip-networking

не забудьте перезапустить:

/etc/init.d/mysqld restart

alfasin
источник
bind-address = ВАШ-СЕРВЕР-IP. вот какой IP мне нужно упомянуть это IP удаленного сервера?
user1986299
@ user1986299 нет, вам нужен IP вашего сервера (не удаленного)
alfasin
1
Вы должны предоставить себе доступ ... войти в свою БД с локального сервера, набрав mysql, а затем:grant all privileges on *.* to 'root'@'%' identified by 'your-password'
alfasin
5
НИКОГДА не предоставляйте root'а @ '%' это огромная безопасность, нет, нет!
josh123a123
1
@alfasin это небольшой твик с глубоким влиянием, спасибо!
Кристофер Шенфельдт
30

просто поместите это на терминал в Ubuntu:

mysql -u username -h host -p

Теперь нажмите Enter

терминал спросит у вас пароль, введите пароль и вы на сервере базы данных

Кедар Джангир
источник
14

Попробуйте эту команду mysql -uuser -hhostname -PPORT -ppassword.

Я столкнулся с подобной ситуацией, и позже, когда mysql порт для хоста был введен с командой, это было решено.

rajarajan2809
источник
5
mysql -u testuser -h 192.168.**.* -P 3306 -p passwordработал для меня
Mahebub A Sayyed
14

Для Mac используйте следующую команду:

mysql -u app -h hostaddress -P port -D dbname -p

и затем введите пароль, когда будет предложено.

KayV
источник
12

Если вы не хотите использовать 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

Роговица Валентин
источник
Лучший ответ! Спасибо
Настро
8
  1. попробуй telnet 3306. Если он не открывает соединение, либо есть настройка брандмауэра, либо сервер не прослушивает (или не работает).

  2. запустить netstat -anна сервере, чтобы увидеть, если сервер работает.

  3. Возможно, вы не разрешаете удаленные подключения.

    См. Http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html.

Сообщество
источник
6

Я предполагаю, что у вас установлен MySQL на вашем компьютере. Выполните команду ниже после заполнения недостающих деталей:

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 
realPK
источник
2

Необходимо проверить, блокируется ли входящий доступ к порту 3306 брандмауэром или нет.

Амирол Ахмад
источник
Как я могу это проверить
ChandraMouli Poreddy
2

Есть простая команда.

mysql -h {hostip} -P {port} -u {username} -p {database}

пример

mysql -h 192.16.16.2 -P 45012 -u rockbook -p rockbookdb
Маниш Госвами
источник
{hostip} не будет добавлять какие-либо подробности порта, такие как 192.10.10.26::45124
Маниш Госвами
1

это решение работало для меня:

На вашей удаленной машине (пример: 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

Спросит пароль, поставит пароль и вы подключены. Надеюсь это поможет.

violentr
источник
1

Попробуйте это, это работает:

mysql -h {имя хоста} -u {имя пользователя} -p {пароль} -N -e "{запрос на выполнение}"

рави теджа
источник
0

Вы должны поставить свой пароль с «р»

mysql -u root -u 1.1.1.1 -p'MyPass'
Карин Лахьяни
источник
0

Я тоже получаю ту же ошибку. Но нашел это полезным, создав нового пользователя 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

Вот полный пост:

http://openvani.com/blog/connect-remotely-mysql-server/

Давиндер Снехи
источник
0

Серверы 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
mivk
источник
0

Этот сработал для меня в MySQL 8, замените его hostnameвашим именем хоста и port_numberвашим port_number, вы также можете изменить свой mysql_user, если он не root

      mysql --host=host_name --port=port_number -u root -p

Дополнительная информация здесь

джинсы
источник
0

Если вы работаете в Windows, попробуйте Visual Studio Code с плагинами MySQL - простой и интегрированный способ доступа к данным MySQL на компьютере с Windows. И таблицы базы данных перечислены и могут выполнять любые пользовательские запросы.

Космо Арун
источник