Доступ к удаленной базе данных 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

  1. пытаться telnet 3306, Если это не открывает соединение, либо есть настройка брандмауэра, либо сервер не слушает (или не работает).
  2. бежать netstat -an на сервере, чтобы увидеть, если сервер работает.
  3. Возможно, вы не разрешаете удаленные подключения.

    См. 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

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

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

Вы должны поставить свой пароль с '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
Другие вопросы по тегам