美文网首页
Ubuntu下MySQL连接问题

Ubuntu下MySQL连接问题

作者: 简一点点 | 来源:发表于2019-07-09 11:23 被阅读0次

    记录一下~~

    新手,在学python中,之前学到mysql操作,遇到一个有点迷得问题:

    在sudo下mysql操作(root下运行),一切正常.

    就在我用普通用户shell下运行出现以下错误:

    mysql -uroot -pmysql
    
    mysql: [Warning] Using a password on the command line interface can be insecure.
    ERROR 1698 (28000): Access denied for user 'root'@'localhost'
    

    还是我在ipython中连接才意识到有问题的,之前查阅信息说是权限问题,折腾之后问题依旧~~无奈

    import pymysql
    conn = pymysql.connect(host='127.0.0.1',port=3306,
                           user='root',password='mysql',
                           database='mysql',charset='utf8')    
    InternalError: (1698, "Access denied for user 'root'@'localhost'")
    

    那这个问题怎么搞?

    MySQL库里有张表(user)是专门放用户信息(用户名,密码,权限等等).

    问题就在root用户plugin的值auth_socket,应该是一种安全措施,其他以后在多多了解吧!

    执行以下代码,重启mysql就好了:

    update mysql.user set authentication_string=PASSWORD('NewPassword'), plugin='mysql_native_password' where user='root';

    flush privileges;

    mysql> select user,plugin from mysql.user;
    +------------------+-----------------------+
    | user             | plugin                |
    +------------------+-----------------------+
    | root             | auth_socket           |
    | mysql.session    | mysql_native_password |
    | mysql.sys        | mysql_native_password |
    | debian-sys-maint | mysql_native_password |
    | root             | mysql_native_password |
    +------------------+-----------------------+
    5 rows in set (0.02 sec)
    
    mysql> update mysql.user set authentication_string=PASSWORD('NewPassword'), plugin='mysql_native_password' where user='root';
    Query OK, 2 rows affected, 1 warning (0.13 sec)
    Rows matched: 2  Changed: 2  Warnings: 1
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.02 sec)
    
    
    sudo service mysql restart
    

    在shell中,不用权限就可连接库了,Python也可以了,下面是效果.

    mysql -uroot -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3
    Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)
    
    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> 
    
    In [1]: import pymysql                                      
    
    In [2]: con = pymysql.connect(host='127.0.0.1',port=3306,use
       ...: r='root',password='ohmysql',database='mysql',charset
       ...: ='utf8')    
    

    相关文章

      网友评论

          本文标题:Ubuntu下MySQL连接问题

          本文链接:https://www.haomeiwen.com/subject/xvatkctx.html