浏览器报错Access denied for user 'root'@'localhost'(using password:NO

浏览器报错:SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
我用navicat连接数据库成功了,用户名是root,密码是安装mysql时设的密码,框架用的是tp5,
网上找了很多方法都不管用,请问怎么解决?

阅读 16.7k
2 个回答

简单的理解 MySQL-Server 连接的意义。
站在初学者的角度,连接 MySQL-Server 有两种方式:

1. 客户端连接,你所使用的 Navicat 就是客户端连接。
2. API 连接,就是你上面所谓的 `浏览器报错`。

看你的问题,很有可能就是 root@192.168.%.% 这类用户设置了密码,而 root@localhost 没有设置密码。

测试方法,使用 MySQL 命令行客户端进行测试。

$ mysql -uroot -hlocalhost -p
这里需要注意,不要直接 -p 后面接密码,会被 Linux 命令历史记录记录。

如果没有 mysql 命令。你需要进行安装,根据系统的不同,可以使用
$ sudo yum -y install mysql
或者
$ sudo apt-get install mysql
安装 mysql 命令行客户端

或者你可以使用 Navicat 进行查询,看 root@localhost 账户是否有密码
$ SELECT User, Host, Password FROM mysql.user;

对了,你这个问题非常常见,不建议你直接提问,还不如搜索来的直接。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题