Access denied for user 'root@localhost' (using password:NO)问题的解决
错误详情:
使用pymysql连接数据库mysql,一直无法连接上,
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='1234', db='test', charset='utf8')
原因是自己的mysql没有密码,即root进入直接enter就可以进入数据库,但这样的数据库在使用其他连接可能都会出现这种问题,所以解决问题的第一步就是给root设置一个密码。
步骤如下:
[root ~]# mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:NO)
1.停止mysql服务
1 | [root ~]# net stop mysql |
2.在没有任何特权的情况下启动mysql:
首先找到mysql安装路径,找到my.ini文件,在该文件末尾加上skip-grant-tables
然后启动mysql服务
1 | [root ~]# net start mysql |
3.输入mysql命令符
1 2 | [root ~]# mysql -u root mysql> |
4.修复root用户的权限设置
1 2 3 4 5 6 7 8 9 10 | mysql> use mysql; Database changed mysql> select * from user; Empty set (0.00 sec) mysql> truncate table user; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> grant all privileges on *.* to root@localhost identified by 'YourNewPassword' with grant option; Query OK, 0 rows affected (0.01 sec) |
确认结果:
1 2 3 4 5 6 7 | mysql> select host, user from user; +-----------+------+ | host | user | +-----------+------+ | localhost | root | +-----------+------+ 1 row in set (0.00 sec) |
5.退出外壳程序并以正常模式重启mysql
1 2 3 4 | mysql> quit; [root ~]# kill -KILL [PID of mysqld_safe] [root ~]# kill -KILL [PID of mysqld] [root ~]# service mysql start |
6.现在,可以使用设置的密码以root用户身份成功登录
1 2 | [root ~]# mysql -u root -pYourNewPassword mysql> |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步