mysql主从搭建之诡异事件

今天在搭建主从后出现了主库system账号丢失INSERT权限的情况,记录如下

主库:
system账号权限同root权限,并且mysql库已经删除

从库:
mysql库存在,无system账号

主从同步搭建完成后,start slave开启同步,返回主库测试,发现可以建表,但是不能插入数据,查看system用户权限如下
mysql> select * from user where user='system'G;
*************************** 1. row ***************************
Host: localhost
User: system
Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
Select_priv: Y
Insert_priv: N
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
Create_tablespace_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string:
password_expired: N
1 row in set (0.00 sec)

可以看到system具有更新的权限,遂做如下处理:
mysql> update user set Insert_priv='Y' where user='system';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

保险起见,重启mysql
[root@HadoopDEV1 3306]# ./mysql stop
Mysqldstoping......
[1]+ 完成 mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables 2>&1 > /dev/null
[root@HadoopDEV1 3306]# ./mysql start
Mysqldstarting......
[root@HadoopDEV1 3306]# mysql -usystem -p -S /data/3306/data/mysql.sock
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.6.15-log MySQL Community Server (GPL)

Copyright (c) 2000, 2013, 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.

再次查看system用户权限
mysql> select * from mysql.user where user='system'G;
*************************** 1. row ***************************
Host: localhost
User: system
Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
Create_tablespace_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string:
password_expired: N
1 row in set (0.00 sec)

插入数据测试:
mysql> select * from t;
Empty set (0.00 sec)

mysql> insert into t values(2);
Query OK, 1 row affected (0.01 sec)

mysql> select * from t;
+------+
| id |
+------+
| 2 |
+------+
1 row in set (0.00 sec)

测试插入正常,对于具体原因尚不得知

原文地址:https://www.cnblogs.com/xuchenliang/p/7068236.html