错误详情:
使用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服务
[root ~]# net stop mysql
2.在没有任何特权的情况下启动mysql:
首先找到mysql安装路径,找到my.ini文件,在该文件末尾加上skip-grant-tables
然后启动mysql服务
[root ~]# net start mysql
3.输入mysql命令符
[root ~]# mysql -u root mysql>
4.修复root用户的权限设置
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)
确认结果:
mysql> select host, user from user; +-----------+------+ | host | user | +-----------+------+ | localhost | root | +-----------+------+ 1 row in set (0.00 sec)
5.退出外壳程序并以正常模式重启mysql
mysql> quit; [root ~]# kill -KILL [PID of mysqld_safe] [root ~]# kill -KILL [PID of mysqld] [root ~]# service mysql start
6.现在,可以使用设置的密码以root用户身份成功登录
[root ~]# mysql -u root -pYourNewPassword mysql>