首先,我创build一个数据库目录:
$ mysql_install_db --datadir=./foo
然后,我启动mysql守护进程:
$ mysqld --port=5555 --datadir=./foo &
它开始很好,我可以连接到它,例如,Navicat。 我正在尝试从shell连接:
$ mysql --user=root --port=5555 --password= ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
该怎么办? 我也尝试先为root用户更改密码:
$ mysqladmin -u root -P 5555 password foo mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'
同样,从独立的SQL应用程序,如Navicat,连接工作得很好。
在MySQL中,用户帐户包含您要连接的主机。 因此, root@localhost和[email protected]是不同的用户,可以有不同的密码。 他们中的任何一个都不可能存在。
试试这个查询,并检查你的root用户是否有不同的密码。
SELECT user, host, password FROM mysql.user WHERE user = 'root';
如果他们这样做,请使用任何方法login并将root@localhost用户的密码更改为您想要的密码。 (一个空string将是没有密码,但是没有密码,特别是特权用户,通常被认为是一个坏主意。)
诀窍是:
$ mysqld --port=5555 --datadir=./foo --socket=./sock &
再后来:
$ mysql --socket=./sock --user=root --port=5555
工作正常。