[英]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.