狼狼 发表于 2019-1-28 07:59:07

mysql问题解决:Can't open privilege tables: Table 'mysql.host

  按照mysql的安装步骤:
  shell> groupadd mysql
  shell> useradd -g mysql mysql
  shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
  shell> cd mysql-VERSION
  shell> ./configure --prefix=/usr/local/mysql
  shell> make
  shell> make install
  shell> scripts/mysql_install_db --user=mysql
  shell> chown -R root/usr/local/mysql
  shell> chown -R mysql /usr/local/mysql/var
  shell> chgrp -R mysql /usr/local/mysql
  shell> cp support-files/my-medium.cnf /etc/my.cnf
  shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
  这样标准进行下来是没有问题的,但在最后一步启动mysql的时候我希望将数据库的数据文件放在另外一个目录下面,启动命令修改为:
  shell>/usr/local/mysql/bin/mysqld_safe --user=mysql --log-error=/u01/mysql/mysql_error/error --datadir=/u01/mysql/data
  这个时候就出现问题了, 因为在进行初始化数据库权限表的那一步的时候默认创建的权限表在默认目录/usr/local/mysql/var下面,这就造成了,上面的错误无法找到 权限表:Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
  解决办法 在运行初始化权限表的时候使用增加参数--datadir ,命令格式为:
  shell> scripts/mysql_install_db --user=mysql --datadir=/u01/mysql/data
  这样问题就解决了。
  这样问题同样也会出现 你将自己的数据库的数据文件修改为别的目录的时候,因为你没有在相应的目录下创建数据库权限表,解决办法就是你重新运行mysql_install_db 文件,重新生成数据库权限表,但是相应的你也要重新建里用户,以及设置权限; 第二个办法应该将老的权限表的文件拷贝倒相应数据库表对应的目录先即可,但是第二个办法我没有用过只是根据自己的想象猜的。如果有高手请给确认一下是否正确
  本人自己遇到问题的解决办法:
  在启动服务前:
  # scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql
  # service mysqld start

页: [1]
查看完整版本: mysql问题解决:Can't open privilege tables: Table 'mysql.host