ubuntu下mysql连接失败怎么办_Ubuntu下MySQL连接问题

在学习Python时遇到MySQL连接问题,普通用户下运行MySQL提示Access denied。问题根源是root用户的plugin设置为auth_socket。通过更新MySQL.user表,将root用户的plugin改为mysql_native_password并重置密码,然后刷新权限并重启MySQL服务,解决了无权限连接的问题。
摘要由CSDN通过智能技术生成

记录一下~~

新手,在学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')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值