我使用以下命令在 Mac OS X 上连接了 mysql:
mysql -u root -p -h 127.0.0.1
登录后,我启动了以下命令:
select user();
结果显示:
root@localhost
甚至有线,我已经通过SET PASSWORD
命令更改了 127.0.0.1 上的 root 密码。
当我输入
show grants for 'root'@'127.0.0.1';
结果密码确实改变了。
不过我还是得用旧密码登录,命令如下:
mysql -u root -p -h 127.0.0.1
问题
- 你能告诉我为什么会发生这种情况吗?
- 这有什么问题吗?
答案1
使用 127.0.0.1 连接到 MySQL 需要 TCP/IP 协议。
问题是 mysql 客户端试图通过说
- 如果您指定 127.0.0.1 并且不告诉我协议,我将使用套接字并表现得像本地主机连接。
- 如果你指定 127.0.0.1 并告诉我使用 TCP/IP,那么我将使用 TCP/IP 连接
鉴于此,您必须按如下方式连接:
mysql -u root -p -h 127.0.0.1 --protocol=tcp
为了验证这一点,请在连接后运行此命令
SELECT USER(),CURRENT_USER();
两者都应该说[email protected]
(我如何查看我以哪个用户身份登录 MySQL?)
试一试 !!!