Доступ к удаленной базе данных mysql из командной строки
У меня есть сервер с Rackspace. Я хочу получить доступ к базе данных из моей локальной командной строки.
Я пробовал:
mysql -u username -h my.application.com -ppassword
Но это дает ошибку:
ОШИБКА 2003 (HY000):
Невозможно подключиться к серверу MySQL на 'my.application.com' (10061)
Что вызывает эту ошибку и как я могу подключиться к удаленной базе данных?
Ответы
Ответ 1
Чтобы напрямую войти в удаленную консоль mysql, используйте следующую команду:
mysql -u {username} -p {password} \
-h {remote server ip or name} -P {port} \
-D {DB name}
Это приведет вас к консоли MySQL напрямую, переключившись на указанную базу данных.
Ответ 2
изменить файл my.cnf:
vi /etc/my.cnf
:
убедитесь, что:
bind-address=YOUR-SERVER-IP
и если у вас есть строка:
skip-networking
обязательно прокомментируйте это:
#skip-networking
не забудьте перезапустить:
/etc/init.d/mysqld restart
Ответ 3
просто поместите это на терминал в ubuntu:
mysql -u username -h host -p
Теперь нажмите enter
Терминал запросит у вас пароль, введите пароль, и вы попадете в сервер базы данных
Ответ 4
Попробуйте выполнить эту команду mysql -uuser -hhostname -PPORT -ppassword
.
Я столкнулся с подобной ситуацией, а позже, когда для этой команды был добавлен порт mysql для хоста, он был решен.
Ответ 5
Для Mac используйте следующую команду:
mysql -u app -h hostaddress -P port -D dbname -p
и затем введите пароль, когда будет предложено.
Ответ 6
Если вы не хотите использовать 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
Измените пользовательский корень для локальных сетей (выполните запрос ниже на удаленном сервере, к которому вы хотите иметь доступ)
[email protected]:~$ 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;
Затем вы можете подключиться:
[email protected]:~$ mysql -h 192.168.1.100 -u root -p
протестировано на сервере Ubuntu 18.04
Ответ 7
Ответ 8
Я предполагаю, что на вашем компьютере установлена MySQL. Выполните следующую команду после заполнения отсутствующих данных:
mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306
Ответ 9
Необходимо проверить, заблокирован ли входящий доступ к порту 3306 брандмауэром.
Ответ 10
Вы должны поместить свой пароль с помощью "p"
mysql -u root -u 1.1.1.1 -p'MyPass'
Ответ 11
это решение работало для меня:
На вашем удаленном компьютере (пример: 295.13.12.53) есть доступ к вашей целевой удаленной машине (на которой запущен сервер mysql)
ssh -f -L 295.13.12.53:3306:10.18.81.36:3306 [email protected]
Разъяснения:
ssh -f -L your_ssh_mashine_ipaddress:your_ssh_mashine_local_port:target_ipaddress:target_port [email protected]_ip_address -N
your_ssh_mashine_ipaddress - это не локальный IP-адрес, это IP-адрес
что вы ssh к, в этом примере 295.13.12.53
your_ssh_mashine_local_port - это настраиваемый порт не 22, в этом примере это 3306.
target_ipaddress - ip машины, которую вы пытаетесь сбрасывать DB.
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
Спросит пароль, поместит ваш пароль, и вы подключитесь.
Надеюсь, это поможет.
Ответ 12
Я тоже получал ту же ошибку.
Но оказалось, что это полезно, создав нового пользователя 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/
Ответ 13
Попробуйте это, это работает:
mysql -h {имя хоста} -u {имя пользователя} -p {пароль} -N -e "{запрос на выполнение}"
Ответ 14
Серверы mysql обычно настроены на прослушивание только localhost (127.0.0.1), где они используются веб-приложениями.
Если это ваш случай, но у вас есть SSH-доступ к вашему серверу, вы можете создать ssh-туннель и подключиться через него.
На вашем локальном компьютере создайте туннель.
ssh -L 3307:127.0.0.1:3306 -N [email protected]$remote_host
(в этом примере используется локальный порт 3307, в случае, если у вас также запущен mysql на локальном компьютере и используется стандартный порт 3306)
Теперь вы должны быть Элем, чтобы связаться с
mysql -u $user -p -h 127.0.0.1 -P 3307