Доступ до віддаленої бази даних mysql з командного рядка


190

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

Я намагався:

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

Але це дає помилку:

ПОМИЛКА 2003 (HY000):

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

Що викликає цю помилку і як я можу підключитися до віддаленої бази даних?


5
10061= Підключення відмовлено
Danny Beckett

Відповіді:


292

Щоб безпосередньо увійти до віддаленої консолі 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

9
немає місця для інтервенції після -p dev.mysql.com/doc/refman/8.0/en/command-line-options.html
Іван Чау

33

редагувати файл my.cnf:

vi /etc/my.cnf:

переконайтесь, що:

bind-address=YOUR-SERVER-IP

і якщо у вас є рядок:

skip-networking

обов'язково прокоментуйте це:

#skip-networking

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

/etc/init.d/mysqld restart


bind-address = ВАШ-СЕРВЕР-IP. тут, який IP мені потрібно згадати, чи це IP віддаленого сервера?
користувач1986299

@ 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 для хоста, це було вирішено.


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

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


12

Якщо ви не хочете використовувати тунель ssh, у 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

Змінення кореня користувача для доступу до LAN (запустіть рядок запиту на віддаленому сервері, до якого потрібно мати доступ)

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-адреса або ім'я хоста)'

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


Найкраща відповідь! Спасибі
Nastro

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 


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
Manish Goswami

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 mashine, до якого ви підключаєтеся

Після цього все поверніться до машини і зробіть це:

mysqldump -h 295.13.12.53 -P 3306 -u username -p db_name > dumped_db.sql

Попросять пароль, введіть свій пароль і ви підключитесь. Сподіваюся, це допомагає.


1

Спробуйте це, його працює:

mysql -h {ім'я хоста} -u {ім'я користувача} -p {пароль} -N -e "{запит на виконання}"



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

0

Цей працював для мене в mysql 8, заміни hostnameйого ім'ям хоста і port_numberсвоїм номером port_num, ви також можете змінити свій mysql_user, якщо він не root

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

Детальна інформація тут


0

Якщо у вас є Windows, спробуйте Visual Studio Code за допомогою плагінів MySQL - простий та інтегрований спосіб доступу до даних MySQL на машині Windows. Та перераховані таблиці баз даних і можуть виконувати будь-які власні запити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.