簡體   English   中英

無法在Vagrant中使用'root'@'IP_Address'連接MySQL

[英]Unable to connect MySQL using 'root'@'IP_Address' in Vagrant

我正在嘗試使用Vagrant VM連接MySQL 我可以在vagrant ssh中使用root@localhost訪問MySQL ,但是當我使用root@192.168.33.10 (用於Vagrant VM的IP)進行連接時,出現access denied錯誤。

這是我的Vagrant文​​件設置:

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.

   config.vm.network "forwarded_port", guest: 80, host: 8080
   config.vm.network "forwarded_port", guest: 3306, host: 3306

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.

   config.vm.network "private_network", ip: "192.168.33.10"

在MySQL中已經添加了root@192.168.33.10,並賦予了權限

mysql> select User,Host from mysql.user;
+-----------+---------------+
| User      | Host          |
+-----------+---------------+
| root      | 192.168.33.10 |
| mysql.sys | localhost     |
| root      | localhost     |
+-----------+---------------+
3 rows in set (0.00 sec)

MySQL 5.7 mysqld.cnf

I have tried bind-address to '0.0.0.0' and bind-address '192.168.33.10'.

仍然顯示錯誤消息:

vagrant@vagrant-ubuntu-trusty:/etc/mysql/mysql.conf.d$ mysql -u root@192.168.33.10 -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root@192.168.33.10'@'localhost' (using password: YES)

仔細查看錯誤消息。 錯誤消息表明提供給MySQL服務器的用戶名是:

 'user@192.168.33.10'

MySQL從中看到連接的主機是:

 'localhost'

這是MySQL客戶端解釋這些選項的方式:

 mysql -u root@192.168.33.10 -p

-u user提供一個字符串值,在這種情況下,它將'root@192.168.33.10'作為用戶名值。 @符號以及數字和點只是用戶名字符串的一部分。 這些字符沒有特殊含義,只是一個字符串。 MySQL服務器將在mysql.users表中查找具有與該字符串匹配的User值的行。

為了找到匹配項,MySQL還將查看“ Host列中的值。 那將必須匹配被視為連接來自的主機。 這意味着'root'@'localhost'是與'root'@'192.168.33.10' 不同的用戶。

-p提示輸入密碼

省略了要使用的協議,要連接的主機,端口號等任何命令選項。當我們不提供任何MySQL選項時,MySQL默認為

-h localhost

就像那是我們指定的那樣。


如果要通過TCP / IP協議而不是使用Unix套接字連接到MySQL服務器,則需要指定-h hostname-h ipaddress或指定--protocol=TCP

主機名“ localhost :在MySQL中具有特殊含義。這是通過Unix套接字的連接,而不是通過我們期望的環回IP地址。


例如,要連接到本地計算機上的MySQL服務器,請使用回送IP地址監聽默認端口3306:

  mysql -h 127.0.0.1 -u root -p

《 MySQL參考手冊》很好地介紹了大多數此類信息。

http://dev.mysql.com/doc/refman/5.7/en/connecting.html

同樣,默認情況下,MySQL使用反向DNS查找將IP地址解析為主機名。

如果要在mysql.users表的“ Host列中使用IP地址,則需要禁用反向DNS查找。 我們通過包括以下選項來做到這一點:

skip_name_resolve

my.cnf配置文件中。

正確的命令是

mysql -u root -h 192.168.33.10 -p

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM