如何重建mysql授权表??

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
flycatcn
帖子: 79
注册时间: 2006-03-25 21:33

如何重建mysql授权表??

#1

帖子 flycatcn » 2011-03-27 20:46

mysql_install_db 的时候出了问题。

show databses 命令后,应该出现2个默认的数据库。mysql & test (这里的默认数据库mysql是mysql授权表。mysql的核心数据库,mysql_install_db也无法重建)
但是,这里出现的是 information_schema & test

如何mysql数据库的话,就没有授权表。mysq就l毫无用处。

而且mysqladmin的时候,会出现 erroe 1064(42000)。我使用的是已经编译过的版本(绝非自己编译),解压就可以使用的那种。

另外,我直接编译源代码的时候,也会出现这样的错误。真实让我郁闷啊。
附件
Screenshot.png
头像
be00
帖子: 805
注册时间: 2008-07-28 19:51
来自: 长沙
联系:

Re: 如何重建mysql授权表??

#2

帖子 be00 » 2011-03-28 12:47

代码: 全选

root@T410i:~# mysql_install_db --basedir =/usr --datadir=/home/mysql --user=mysql
出错的话,把内容贴上来看看
我的乌斑兔儿:http://zhanggang.net/m/b/b1/ubuntu右键选择在新的窗体打开
右边有一只黄手 ----> 或者注册Dropbox中文版感谢我
flycatcn
帖子: 79
注册时间: 2006-03-25 21:33

Re: 如何重建mysql授权表??

#3

帖子 flycatcn » 2011-03-29 23:08

这个错误相当奇怪。我完整的操作过程如下
tar -zxvf mysql-5.5.10-x86-64.tar.gz
move /opt/
sudo chown -R mysql:users /opt/mysql (已经建立过mysql用户)
sudo chmod 775 -R /opt/mysql
./scripts/mysql_install_db --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data
sudo cp ./support-files/my-medium.cnf /etc/my.cnf
sudo chown mysql /etc/cnf
sudo chmod 775 /etc/my.cnf
cp ./support-files/mysql.server /opt/mysql/bin/mysql.server
gedit mysql.server (如果不修改的话,启动会报错。因为原文档的mysql主目录和我的不一样)
--basedir=/opt/mysql
--datadir=/opt/mysql/data
./mysql.server start
至此,全部完成。
mysql <--启动客户端
mysql> show databases;
问题来了,本来应该出现2个初始数据库的。mysql && test。可是初始的mysql不见了。见我第一个帖子的贴图。上面很清除。只有一个test和information_schema的数据库。要知道,没有默认的mysql数据库(mysql数据库授权表),基本上mysql就是废的。根本没有办法使用mysqladmin命令(因为授权表的关系),如果在my.cnf设置中打开了PWD选项,那就根本不能使用客户端。天啊。这是类型的错误啊。从来没有遇到过啊。我使用kubuntu的时候,还是好好的。不过就是换到ubuntu环境下就出这么离谱的错误啊。
头像
be00
帖子: 805
注册时间: 2008-07-28 19:51
来自: 长沙
联系:

Re: 如何重建mysql授权表??

#4

帖子 be00 » 2011-03-31 9:03

我没有从源码安装过,只操作过 Ubuntu 10.10下更改mysql的datadir ,不知道对你是否有帮助
我的乌斑兔儿:http://zhanggang.net/m/b/b1/ubuntu右键选择在新的窗体打开
右边有一只黄手 ----> 或者注册Dropbox中文版感谢我
头像
link_01
帖子: 1024
注册时间: 2008-11-05 13:24

Re: 如何重建mysql授权表??

#5

帖子 link_01 » 2011-03-31 9:26

你以什么用户登录的mysql,怎么看像是当前用户?这样试试:mysql -uroot -p
笔记
-------------------------------------
http://blog.163.com/wqt_1101
flycatcn
帖子: 79
注册时间: 2006-03-25 21:33

Re: 如何重建mysql授权表??

#6

帖子 flycatcn » 2011-04-18 20:42

自我解答

mysql的确是通过授权表来实现对用户和数据库的管理。所以,mysql授权表是mysql的精华所在。

我所遇到的问题,其根本原因在于mysqladmin 的PWD操作不能进行。就是说,在mysql 4版本的时候,可以通过mysqladmin命令来对mysql的root用户进行密码设置。而且,在mysql 4时代,数据库对于如何用户是可见的。(在安装有mysql服务的机器上,所有的操作对于数据库来说,都是可见的。可见就表示可以操作。)那么在mysql 5的时候,这个问题有了解决方案。(就是针对root用户,数据库全部可见,对于其他用户,根据mysql授权表中的设置,来决定数据库是可见还是不可见的。)当用mysql用户登录的时候,mysql作为操作数据库的基本用户,是不可以操作授权表的。(因为在默认的授权表中,没有mysql用户。)只能用root用户登录数据库,在使用 set password命令来设置root用户的密码。这样,所有数据库就是可见的。精华的mysql数据库也就出现了。完成root用户的密码设置以后,就可以正常使用mysql了。不过,所以书本上建议的操作都是基于mysql用户的。虽然mysql用户可以建立数据库,建立表,但是,仅仅是建立数据库而已。无权删除数据库的。(表除外)。给大家的建议,完成root的密码设置以后,在mysql授权表中增加mysql用户及其相应的权限。(推荐用phpmysqladmin工具来进行。中文的,直观)

好了,经过N天的郁闷之后,mysql的操作基本上是搞懂了。对授权表的认识也算是更进一步。有喜欢讨论mysql的,可以联系我。


--------------万恶的mysql
头像
be00
帖子: 805
注册时间: 2008-07-28 19:51
来自: 长沙
联系:

Re: 如何重建mysql授权表??

#7

帖子 be00 » 2011-04-18 20:59

一直都是使用Phpmyadmin来管理,通常把root设置一个复杂的密码,其他就是每次建用户的时候,顺带建一个与用户同名的表,并且赋予全部权限,没有像LS关注的这么细致。
我的乌斑兔儿:http://zhanggang.net/m/b/b1/ubuntu右键选择在新的窗体打开
右边有一只黄手 ----> 或者注册Dropbox中文版感谢我
回复