mysql数据库报错1062_MySQL数据库常用报错解决方法

MySQL数据库常用报错解决方法

MySQL数据库常用报错解决方法

MySQL报错解决方法1)Warning: (3719, u"'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.")

2)pymysql.err.InternalError: (1130, u"Host '10.0.0.5' is not allowed to connect to this MySQL server")

3) ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'

4) ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:yes)

5) ERROR 1142 (42000): SELETE command denied to user 'root'@'localhost' for table 'user'

1)Warning: (3719, u"‘utf8’ is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.")

报错如下:

11542eebbb009eab84ad06ffdbe42951.png

解决方法: python 2.7+mysql:8.0

查看mysql字符集:mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

1c247c164d3d746f75a9f8cd6e7cc81e.png

根据上述查询结果,修改sql语句;

修改前 = ‘CREATE DATABASE IF NOT EXISTS database_name DEFAULT CHARSET utf8 COLLATE utf8_general_ci;’

修改后 = ‘CREATE DATABASE IF NOT EXISTS database_name DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci;’

2)pymysql.err.InternalError: (1130, u"Host ‘10.0.0.5’ is not allowed to connect to this MySQL server")

报错原因: 不容许本地机器连远程mysql服务;

解决步骤:

本机连接MySQL数据库:# mysql -uroot -p123456

操作mysql数据库mysql>use mysql;

mysql>select 'host' from user where user='root';

mysql>update user set host='%' where user='root';

mysql>flush privileges;

3) ERROR 1062 (23000): Duplicate entry ‘%-root’ for key ‘PRIMARY’

报错场景: 开启MySQL远程操作时,会报1062错误

[[email protected] ~]# mysql -uroot -p123456

mysql> update mysql.user set host='%' where user='root';

ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'

若此处报错,则不予理会,不予理会,不予理会. 重要的事说三遍

//接着 刷新权限 或者服务重启操作

mysql> flush privileges;

mysql> select host,user from mysql.user ;

+-----------+---------------+

| host | user |

+-----------+---------------+

| % | mysqld |

| % | root |

| localhost | mysql.session |

| localhost | mysql.sys |

| localhost | root |

+-----------+---------------+

5 rows in set (0.00 sec)

如上所示,root用户对应的是root-%,即可远程登陆了。

4) ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password:yes)

报错原因: 这类错误,一般情况是由于登陆密码错误导致的;

0c0f09167a6a9a39cf83ca2dcd860034.png

解决方法: 重置密码

跳过MySQL密码认证过程,方法为修改my.cnf文件,如下:

[[email protected] ~]# vim /etc/my.cnf

在文档内搜索mysqld定位到[mysqld]文本段:

在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下:

[mysqld]

#

skip-grant-tables //跳过表的权限验证,用户可以执行增删改查

重启MySQL

[[email protected] ~]# service mysqld restart

Redirecting to /bin/systemctl restart mysqld.service

直接使用mysql进入mysql

[[email protected] ~]# mysql

mysql>

修改root的密码

mysql>update mysql.user set password=password("你的新密码") where user="root";

mysql>flust privileges;

mysql>quit

若出现ERROR 1054(42S22) Unknown column ‘password’ in ‘field list’,

错误原因为: 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string,则使用以下命令:

mysql>update mysql.user set authentication_string=password('123456') where user='root';

编辑my.cnf,恢复原来需要密码认证,即将skip-grant-tables删除

重启MySQL

[[email protected] ~]# service mysqld restart

Redirecting to /bin/systemctl restart mysqld.service

使用新修改的密码登陆MySQL,登陆成功,完整的操作流程如下:

[[email protected] ~]# mysql -uroot -p123456

mysql: [Warning] Using a password on the command line interface can be insecure.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

[[email protected] ~]# vim /etc/my.cnf

[[email protected] ~]# service mysqld restart

Redirecting to /bin/systemctl restart mysqld.service

[[email protected] ~]# mysql

mysql> update mysql.user set authentication_string=password('123456') where user='root';

Query OK, 0 rows affected, 1 warning (0.00 sec)

Rows matched: 1 Changed: 0 Warnings: 1

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> quit

Bye

[[email protected] ~]# vim /etc/my.cnf

[[email protected]~]# service mysqld restart

Redirecting to /bin/systemctl restart mysqld.service

[[email protected] ~]# mysql -uroot -p123456

5) ERROR 1142 (42000): SELETE command denied to user ‘root’@‘localhost’ for table ‘user’

报错场景: 登陆数据库,操作数据库(增删改查)时,报ERROR 1142 (42000)的错误;

错误定位: MySQL ERROR 1142 (42000)为mysql grants权限不足引起的问题

解决方法: 修改mysql.user表的权限

查看mysql所有用户信息的权限mysql> select * from mysql.user\G

*************************** 1. row ***************************

Host: localhost

User: root

Select_priv: N

Insert_priv: N

Update_priv: N

Delete_priv: N

Create_priv: N

Drop_priv: N

Reload_priv: N

Shutdown_priv: N

Process_priv: N

File_priv: N

Grant_priv: Y

References_priv: N

Index_priv: N

Alter_priv: N

Show_db_priv: N

Super_priv: N

从以上可以看出,很多权限都是N,即表示没有相应的权限;

修改权限,根据需要选择mysql> update mysql.user set Select_priv='Y' where user='root';

mysql> update mysql.user set Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y' where user='root';

查看权限,all privileges是对root主机的所有用户执行最大的权限mysql> show grants;

+---------------------------------------------------------------------+

| Grants for [email protected] |

+---------------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |

| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |

+---------------------------------------------------------------------+

2 rows in set (0.00 sec)

95168e8528e527d443729ed59d06668e.png

MySQL数据库常用报错解决方法相关教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值