![无法连接:拒绝用户‘[user]’@‘localhost’访问(使用密码:是)](https://linux22.com/image/542437/%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%EF%BC%9A%E6%8B%92%E7%BB%9D%E7%94%A8%E6%88%B7%E2%80%98%5Buser%5D%E2%80%99%40%E2%80%98localhost%E2%80%99%E8%AE%BF%E9%97%AE%EF%BC%88%E4%BD%BF%E7%94%A8%E5%AF%86%E7%A0%81%EF%BC%9A%E6%98%AF%EF%BC%89.png)
我正在尝试安装一个基于 PHP 的工具,该工具连接到托管在 Ubuntu 上的 MySQL 数据库。我可以从命令行登录 MySQL 数据库,但运行该应用程序会导致此错误:
Access denied for user '[user]'@'localhost' (using password: YES)
我做了什么:使用指导这次讨论,以下是我采取的一些故障排除步骤。
尝试通过 Telnet 连接到 MySQL 会导致以下乱码:
$ telnet 127.0.0.1 3306 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. A 5.1.41-3ubuntu12.10XIs(ja&7FyO`r>zpDAY{Connection closed by foreign host.
我的/etc/hosts.deny文件是空的。我已将以下几行添加到我的/etc/hosts.allow文件:
mysqld:全部:允许 mysqld-max:全部:允许
虽然
bind-address
在我的/etc/mysql/my.cnf文件设置为127.0.0.1
,我将其注释掉但无济于事。禁用防火墙
刷新权限
值得注意的是,我在每个步骤之后都使用以下命令重新启动了 MySQL:
mysqladmin -u [user] -p shutdown
mysqld_safe &
我错过了什么?
答案1
如果 mysql 管理员可以工作,那么客户端程序也可以工作吗?
如果客户端程序运行正常,则可能 mysql 客户端库已过期,需要更新。(我更熟悉 RedHat,但它可能是类似sudo apt-get update php-mysql
.. 的东西,但我对那个包名不是 100% 确定)
还要确保你使用的名称与设置用户时的名称完全一致。如果你设置用户,则user@localhost
可能无法使用[email protected]
希望有帮助
答案2
尝试这个
mysql >GRANT ALL ON [database name].* TO [user]@'127.0.0.1' IDENTIFIED BY '[PASSWORD]';