用户'root'@'localhost'的MYSQL访问被拒绝
Posted
技术标签:
【中文标题】用户\'root\'@\'localhost\'的MYSQL访问被拒绝【英文标题】:MYSQL Access denied for user 'root'@'localhost'用户'root'@'localhost'的MYSQL访问被拒绝 【发布时间】:2013-08-22 02:19:48 【问题描述】:我做了以下步骤在 Ubuntu 中使用 mysql:
sudo aptitude install php5-mysql mysql-server
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &
sudo mysql -u root mysql
修改root密码:
mysql> UPDATE mysql.user SET Password=PASSWORD('SecurePassword') WHERE
User='root';
mysql> FLUSH PRIVILEGES;
mysql> EXIT
修改/etc/mysql/my.cnf:
[client]
user=root
password=SecurePassword
[mysqld]
...
default-time-zone = '+0:00'
然后:
sudo service mysql start
mysql -u root
mysql> SHOW GRANTS FOR root@localhost
+--------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+--------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '[here is the Securepassword]' |
+-------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
我收到一个错误:
拒绝用户“root”@“localhost”访问(使用密码:YES)
【问题讨论】:
在您的ini
中检查bind-address=localhost
。
【参考方案1】:
你所做的绝对正确,但我想它不起作用有一个小原因。
当你要授予这样的权限时,你应该使用identified by password
:
mysql> GRANT ALL PRIVILEGES ONE `*`.`*` TO 'root'@'localhost' IDENTIFIED BY PASSWORD
'*A4B6157319038724E3560894F7F932C8886EBFCF' WITH GRANT OPTION;
【讨论】:
我不认为你是对的,IDENTIFY BY PASSWORD
需要纯文本密码,而不是 PASSWORD('')
值【参考方案2】:
如果您收到如下错误消息:
Warning: mysql_connect(): Access denied for user: ....
那么问题是你的应用程序不能access the database
。这可能有几个原因:
首先,确保您的db-config.php
(您的应用程序的连接文件)中的数据库设置正确,特别是您的 MySQL 用户的name
和password
,您的database
的名称,以及您的 MySQL 服务器的名称。
如果您正在运行自己的服务器,您可能需要为您的 MySQL 用户提供适当的权限。以 MySQL root 用户身份登录 MySQL 并发出以下命令:
GRANT ALL PRIVILEGES ON database_name TO user@host IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
【讨论】:
请注意,我们希望得到解决问题中具体问题的答案。请务必密切关注正在使用的语言、平台、库等,并确保寻找精确问题的解决方案。例如;这个问题根本不是关于 PHP 的。【参考方案3】:像 Ubuntu 这样的系统默认喜欢使用 auth_socket 插件作为 root 帐户。它将尝试通过比较您在数据库中的用户名和发出 mysql 请求的进程来进行身份验证;在here中有描述
socket插件检查socket用户名(操作 system user name) 匹配客户端指定的 MySQL 用户名 程序到服务器,并且仅当名称 匹配。
相反,您可能希望返回 mysql_native_password,这将需要用户/密码进行身份验证。
关于实现这一点的方法,我建议您改为检查this。
【讨论】:
以上是关于用户'root'@'localhost'的MYSQL访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章