• 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服务

    [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> 
    

      

  • 相关阅读:
    Android用Application设置全局变量以及使用
    Android Spinner
    margin和padding的区别
    Java中Calendar常用方法封装
    Java中Calendar的用法以及获取当前日期的后一天
    Oracle Exists用法
    (Oracle)rownum用法详解
    Android中GestureDetector.OnGestureListener
    Java文件路径详解[转载]
    Android利用ViewFlipper实现屏幕切换动画效果
  • 原文地址:https://www.cnblogs.com/AIchangetheworld/p/11726383.html
Copyright © 2020-2023  润新知