我刚刚安装了MySQL 5.5,安装后我被要求通过执行这两个命令来设置root密码:
/usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h linux-opxd password 'new-password'
要么
/usr/bin/mysql_secure_installation
我执行第一个命令 – 好的。 这次我执行了第二个命令,出现错误:
错误:'拒绝访问用户root'@'localhost'(使用密码:NO)'
我重新执行了第一个(用于检查) – 错误如上。
所以,我执行了mysql_secure_installation 。 一切正常,我的密码被认出。 所以我再次执行了前两个命令 – 并再次出错。
作为另一个检查:
mysql --user=root
与上面相同的错误。
我尝试使用mysql身份validation重置密码,我也尝试/usr/bin/mysql_upgrade -u root -p – 仍尝试以root身份启动mysql控制台时出错。
所以最后我closures了身份validation,连接到控制台并执行此操作:
SELECT user();
输出 – root@ 。 如果我这样连接:
mysql --user='root@localhost'
我将得到root@localhost@ 。
所以现在看起来不是特权的问题,或者缺less密码或类似的东西,但是不能识别在命令行给出的用户 – mysql在最后附加@这似乎是问题(在至less我的眼睛)。
问题是:如何让MySQL识别给定的用户?
您收到的第一个错误:
错误:'拒绝访问用户root'@'localhost'(使用密码:NO)'
表示您可能没有在mysql命令中使用-p选项。
一旦你创build了mysql root密码,你应该能够访问MySql:
mysql -u root -p
在那里你会被提示inputMySql的root密码。
如果要启用从其他位置(与本地主机不同)的访问,则可以使用类似于以下的SQL GRANT命令来授予权限:
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON databaseName.* TO 'username'@'localhost' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;
以类似的方式,您可以通过将'username'@'localhost'更改为'username'@'someFQDN','username'@'IP_address','username来从其他主机名/ IP地址或任何位置启用MySql DB访问'@' %”。
有关其他信息,我build议: http : //dev.mysql.com/doc/refman/5.1/en/adding-users.html 。
干杯!
您在第二个mysqladmin命令上得到错误消息的原因是因为您没有使用您在第一个命令中设置的密码对服务器进行身份validation。 只需在第二个命令中包含“-p”,并在询问时input密码。 或者更简单,只需使用mysql_secure_installation命令,因为它需要照顾它加上一些其他有用的东西。