mysql错误【一】[ERROR] Missing system table mysql.proxies_priv
admin
2023-05-19 13:02:44
0

    环境:mysql一主一从架构,主库是mysql5.1,从库是mysql5.6;系统均为CentOS6.2

    问题:

        在主库上面执行的SQL语句

        1.创建表     

 CREATE TABLE `app_versions` (
  `date` date NOT NULL,
  `app` char(16) NOT NULL,
  `ver` char(16) NOT NULL,
  `val` int(11) DEFAULT '0',
  PRIMARY KEY (`date`,`app`,`ver`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

        2.创建用户并且给予权限

        grant select on databasename.* to 'username'@'IPaddress' identified by 'password'

        3.刷新权限信息

        flush privileges

    在主库上面执行完之后,在从库上面执行show slave status \G发现IO进程和SQL进程显示的都是NO,然后执行start slave IO_THREAD之后再次执行show slave status \G 发现IO进程是拉起来了的显示的是YES,之后再执行start slave SQL_THREAD进程,show slave status \G发现IO进程和SQL进程都是显示的NO,并且在从库的错误日志中可以获取得到:

mysql错误【一】[ERROR] Missing system table mysql.proxies_priv

    在错误日志中可以很明显的看得到日志提示:

        Missing system table mysql.proxies_pri;please run mysql_upgrade to create it

    日志提示系统表mysql.proxies_pri不存在,需要执行mysql_upgrade,然后我自己google了一下,

发现大部分都是因为升级mysql之后没有执行mysql_upgrade导致的,但是我在主库上面根本就没有进

行任何的升级操作,在从库也是这个样子,然后网上的建议是mysql_upgrade升级修复一下。

    mysql_upgrade主要作用是检测所有的表并且升级mysql这个系统库内所有的表,是进行在线升级的,所以并不会影响线上操作(PS:当然不包括有关mysql库的操作)。

    The mysql.proxies_priv table contains information about proxy privileges. The table can be queried and although it is possible to directly update it, it is best to use GRANT for setting privileges.

    可以看到上述对于mysql.proxies_priv系统表的猜测,可以比较明显的看到这个表主要是用来管理

数据库用户权限信息的表,所以我猜测数据库很有可能卡在权限这块了,并且在从库中我在mysql.user这个表中并没有发现我之前grant创建的用户。这个时候我在从库上面设置了跳过一个事务:

        set global sql_slave_skip_counter = 1(只是跳过一个事务,跳过之后归0)

    之后我在重启start slave。slave恢复了正常,日志也能够正常的往里面写了。所以我猜想这个问题和

权限有关,假如需要验证的话,最好是在从库上面开启general log,并且在从库的binlog获取最新的事

务的信息并且根据获取的信息在relay log中继日志找到下一个事务是不是这个。

    但是这个方案也是属于治标不治本,下次在执行grant操作的时候,可能还是会出现这个问题,所以还是最后使用mysql_upgrade

    mysql_upgrade -uroot -p

[root@gitlab-test data]# mysql_upgrade -uroot -p

Enter password: 

Looking for 'mysql' as: mysql

Looking for 'mysqlcheck' as: mysqlcheck

This installation of MySQL is already upgraded to 5.6.35, use --force if you still need to run mysql_upgrade

[root@gitlab-test data]# mysql_upgrade -uroot -p --force

Enter password: 

Looking for 'mysql' as: mysql

Looking for 'mysqlcheck' as: mysqlcheck

Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/data/mysql/mysql.sock' 

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

Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/data/mysql/mysql.sock' 

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

mysql.columns_priv                                 OK

mysql.db                                           OK

mysql.event                                        OK

mysql.func                                         OK

mysql.general_log                                  OK

mysql.help_category                                OK

mysql.help_keyword                                 OK

mysql.help_relation                                OK

mysql.help_topic                                   OK

mysql.innodb_index_stats                           OK

mysql.innodb_table_stats                           OK

mysql.ndb_binlog_index                             OK

mysql.plugin                                       OK

mysql.proc                                         OK

mysql.procs_priv                                   OK

mysql.proxies_priv_bak                             OK

mysql.servers                                      OK

mysql.slave_master_info                            OK

mysql.slave_relay_log_info                         OK

mysql.slave_worker_info                            OK

mysql.slow_log                                     OK

mysql.tables_priv                                  OK

mysql.time_zone                                    OK

mysql.time_zone_leap_second                        OK

mysql.time_zone_name                               OK

mysql.time_zone_transition                         OK

mysql.time_zone_transition_type                    OK

mysql.user                                         OK

Running 'mysql_fix_privilege_tables'...

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

Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/data/mysql/mysql.sock' 

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

Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/data/mysql/mysql.sock' 

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

core_test.test                                     OK

data_test.test                                     OK

gitlabhq_production.abuse_reports                  OK

gitlabhq_production.application_settings           OK

gitlabhq_production.audit_events                   OK

gitlabhq_production.broadcast_messages             OK

gitlabhq_production.deploy_keys_projects           OK

gitlabhq_production.emails                         OK

gitlabhq_production.events                         OK

gitlabhq_production.forked_project_links           OK

gitlabhq_production.identities                     OK

gitlabhq_production.issues                         OK

gitlabhq_production.keys                           OK

gitlabhq_production.label_links                    OK

gitlabhq_production.labels                         OK

gitlabhq_production.members                        OK

gitlabhq_production.merge_request_diffs            OK

gitlabhq_production.merge_requests                 OK

gitlabhq_production.milestones                     OK

gitlabhq_production.namespaces                     OK

gitlabhq_production.notes                          OK

gitlabhq_production.oauth_access_grants            OK

gitlabhq_production.oauth_access_tokens            OK

gitlabhq_production.oauth_applications             OK

gitlabhq_production.project_import_data            OK

gitlabhq_production.projects                       OK

gitlabhq_production.protected_branches             OK

gitlabhq_production.schema_migrations              OK

gitlabhq_production.services                       OK

gitlabhq_production.snippets                       OK

gitlabhq_production.subscriptions                  OK

gitlabhq_production.taggings                       OK

gitlabhq_production.tags                           OK

gitlabhq_production.users                          OK

gitlabhq_production.users_star_projects            OK

gitlabhq_production.web_hooks                      OK

OK





相关内容

热门资讯

精神科医生“十级美颜”证件照刷... 近日,山西医科大学第一医院精神科医生郎小娥的证件照,因美颜效果突出打破大众固有印象而意外出圈。8月1...
凤凰直击日本熊本震区:刚修缮好... 日本熊本强震重创当地历史建筑。位于熊本县八代市的八代宫神社受损惨重。凤凰卫视特派记者蒋文彬采访了神社...
考勤、工资、社保都要查,中国企... 编者按7月23日,欧盟第21轮对俄制裁,将14家中国内地及香港企业列入名单;不到24小时,中国商务部...
两名俄公民在泰国遇害,泰总理道... 综合泰国《曼谷邮报》等媒体8月2日报道,对于两名俄罗斯公民近期在泰国遇害,泰国总理阿努廷作出表态并进...
总书记的人民情怀|“坚持高质量... 原标题:“坚持高质量发展要成为领导干部政绩观的重要内容”(总书记的人民情怀)本报记者 赵 成 史一棋
马科斯遭痛批“亲美上头”:瞧瞧... 菲律宾主流英文报刊《马尼拉时报》8月3日刊发评论文章,批评菲律宾政府近年来过度依赖美国安全承诺,对华...
马杜罗最新发声 新华社北京8月3日电 遭美国强行控制的委内瑞拉总统尼古拉斯·马杜罗2日借助社交媒体发声,对委内瑞拉政...
时间自有答案!通派龙湖中原颂提... 历经匠心营造,2026年8月1日至3日,通派龙湖中原颂正式集中交付。这不仅是项目与业主之间的一次履约...
液晶电视一边黑屏一边图像正常什... 1、电视显示屏的数据线存在接触不良,需要重新连接或焊接。2、电视数字机顶盒故障,维修或更换。3、视频...
液晶电视进水了黑屏了怎么办 千万不要通电,可以先打开电视机的后板,用吹风机先将内部的水渍吹干。如果一不小心通了电就要先断电,然后...