Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

无法使用phpMyAdmin配置权限的解决方法(若有全局权限)

[复制链接]
cnstudent 发表于 2006-12-22 05:13:54 | 显示全部楼层 |阅读模式
今天朋友的PMA上提示
  1. Warning: Your privilege table structure seems to be older than this MySQL version!
  2. Please run the script mysql_fix_privilege_tables that should be included in your MySQL server distribution to solve this problem!
复制代码

在网上找了半天,没一个真正能解决问题的方案,最后自己动手解决.
把下面代码保存成文件,修改服务器,帐号,密码,放在服务器上运行.

  1. <?php
  2. $dbhost = 'localhost';
  3. $dbuser = 'clement';
  4. $dbpw = 'test';

  5. $db = new dbstuff;
  6. $db->connect($dbhost, $dbuser, $dbpw, 'mysql');
  7. unset($dbhost, $dbuser, $dbpw);

  8. $match = explode('.', $db->version());
  9. $mysql_verson = sprintf('%d%02d%02d', $match[0], $match[1], intval($match[2]));
  10. $mysql_fields = array();
  11. $sql = 'SHOW FULL FIELDS FROM user';
  12. $query = $db->query($sql);
  13. while($mysql = $db->fetch_array($query)) {
  14.         $mysql_fields[] = $mysql['Field'];
  15. }

  16. if($mysql_verson >= 40002) {
  17.         if(!in_array('Show_db_priv', $mysql_fields)) {
  18.                 $db->query("ALTER TABLE user add `Show_db_priv` enum('N','Y') NOT NULL default 'N' AFTER `Alter_priv`;");
  19.         }
  20.         if(!in_array('Super_priv', $mysql_fields)) {
  21.                 $db->query("ALTER TABLE user add `Super_priv` enum('N','Y') NOT NULL default 'N' AFTER `Show_db_priv`;");
  22.         }
  23.         if(!in_array('Create_tmp_table_priv', $mysql_fields)) {
  24.                 $db->query("ALTER TABLE user add `Create_tmp_table_priv` enum('N','Y') NOT NULL default 'N' AFTER `Super_priv`;");
  25.         }
  26.         if(!in_array('Lock_tables_priv', $mysql_fields)) {
  27.                 $db->query("ALTER TABLE user add `Lock_tables_priv` enum('N','Y') NOT NULL default 'N' AFTER `Create_tmp_table_priv`;");
  28.         }
  29.         if(!in_array('Execute_priv', $mysql_fields)) {
  30.                 $db->query("ALTER TABLE user add `Execute_priv` enum('N','Y') NOT NULL default 'N' AFTER `Lock_tables_priv`;");
  31.         }
  32.         if(!in_array('Repl_slave_priv', $mysql_fields)) {
  33.                 $db->query("ALTER TABLE user add `Repl_slave_priv` enum('N','Y') NOT NULL default 'N' AFTER `Execute_priv`;");
  34.         }
  35.         if(!in_array('Repl_client_priv', $mysql_fields)) {
  36.                 $db->query("ALTER TABLE user add `Repl_client_priv` enum('N','Y') NOT NULL default 'N' AFTER `Repl_slave_priv`;");
  37.         }
  38. }

  39. if($mysql_verson >= 50001) {
  40.         if(!in_array('Create_view_priv', $mysql_fields)) {
  41.                 $db->query("ALTER TABLE user add `Create_view_priv` enum('N','Y') NOT NULL default 'N' AFTER `Repl_client_priv`;");
  42.         }
  43.         if(!in_array('Show_view_priv', $mysql_fields)) {
  44.                 $db->query("ALTER TABLE user add `Show_view_priv` enum('N','Y') NOT NULL default 'N' AFTER `Create_view_priv`;");
  45.         }
  46. }

  47. if($mysql_verson >= 50003) {
  48.         if(!in_array('Create_routine_priv', $mysql_fields)) {
  49.                 $db->query("ALTER TABLE user add `Create_routine_priv` enum('N','Y') NOT NULL default 'N' AFTER `Show_view_priv`;");
  50.         }
  51.         if(!in_array('Alter_routine_priv', $mysql_fields)) {
  52.                 $db->query("ALTER TABLE user add `Alter_routine_priv` enum('N','Y') NOT NULL default 'N' AFTER `Create_routine_priv`;");
  53.         }
  54.         if(!in_array('Create_user_priv', $mysql_fields)) {
  55.                 $db->query("ALTER TABLE user add `Create_user_priv` enum('N','Y') NOT NULL default 'N' AFTER `Alter_routine_priv`;");
  56.         }
  57. }
  58. echo '完成';
  59. class dbstuff {
  60.         var $querynum = 0;

  61.         function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0) {
  62.                 if($pconnect) {
  63.                         if(!@mysql_pconnect($dbhost, $dbuser, $dbpw)) {
  64.                                 $this->halt('Can not connect to MySQL server');
  65.                         }
  66.                 } else {
  67.                         if(!@mysql_connect($dbhost, $dbuser, $dbpw)) {
  68.                                 $this->halt('Can not connect to MySQL server');
  69.                         }
  70.                 }

  71.                 if($this->version() > '4.1') {
  72.                         global $charset, $dbcharset;
  73.                         if(!$dbcharset && in_array(strtolower($charset), array('gbk', 'big5', 'utf-8'))) {
  74.                                 $dbcharset = str_replace('-', '', $charset);
  75.                         }

  76.                         if($dbcharset) {
  77.                                 mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary");
  78.                         }

  79.                         if($this->version() > '5.0.1') {
  80.                                 mysql_query("SET sql_mode=''");
  81.                         }
  82.                 }

  83.                 if($dbname) {
  84.                         mysql_select_db($dbname);
  85.                 }

  86.         }

  87.         function select_db($dbname) {
  88.                 return mysql_select_db($dbname);
  89.         }

  90.         function fetch_array($query, $result_type = MYSQL_ASSOC) {
  91.                 return mysql_fetch_array($query, $result_type);
  92.         }

  93.         function query($sql) {
  94.                 if(!($query = mysql_query($sql))) {
  95.                         $this->halt('MySQL Query Error', $sql);
  96.                 }
  97.                 return $query;
  98.         }

  99.         function version() {
  100.                 return mysql_get_server_info();
  101.         }

  102.         function halt($message = '', $sql = '') {
  103.                 echo $message.$sql;
  104.                 exit;
  105.         }
  106. }
  107. ?>
复制代码
CS1.3 发表于 2006-12-22 13:48:39 | 显示全部楼层
猴子又让我们来顶顶
所以我就又来顶顶了
回复

使用道具 举报

0519 发表于 2007-2-22 02:08:29 | 显示全部楼层
好帖,谢谢楼主分享,帮我解决了问题
回复

使用道具 举报

flognfya 发表于 2007-2-22 03:28:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-1-11 21:03 , Processed in 0.029523 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表