在安装MySQL后,你通过运行scripts/mysql_install_db
安装初始的存取权限。见4.7.1 快速安装概述。 scripts/mysql_install_db
脚本启动mysqld
服务器,然后初始化授权表,包含下列权限集合:
- MySQL
root
用户作为可做任何事情的一个超级用户被创造。连接必须由本地主机发出。注意:出世的root
口令是空的,因此任何人能以root
而没有一个口令进行连接并且被授予所有权限。 - 一个匿名用户被创造,他可对有
一个'test'
或以'test_'
开始的名字的数据库做任何时期事情,连接必须由本地主机发出。这意味着任何本地用户能连接并且视为匿名用户。 - 其他权限被拒绝。例如,一般用户不能使用
mysqladmin shutdown
或mysqladmin processlist
。
注意:对Win32的初始权限是不同的。见4.12.4 在Win32上运行MySQL。
既然你的安装初始时广开大门,你首先应该做的事情之一是为MySQL root
用户指定一个口令。你可以做如下(注意,你使用PASSWORD()
函数指定口令):
shell> mysql -u root mysql mysql> UPDATE user SET Password=PASSWORD('new_password') WHERE user='root'; mysql> FLUSH PRIVILEGES;
在MySQL 3.22和以上版本中,你可以使用SET PASSWORD
语句:
shell> mysql -u root mysql mysql> SET PASSWORD FOR root=PASSWORD('new_password');
设置口令的另一种方法是使用mysqladmin
命令:
shell> mysqladmin -u root password new_password
注意:如果你使用第一种方法在user
表里直接更新口令,你必须告诉服务器再次读入授权表(用FLUSH PRIVILEGES
),因为否则改变将不被注意到。
一旦root
口令被设置,此后当你作为root
与服务器连接时,你必须供应那个口令。
你可能希望让root
口令为空白以便当你施行附加的安装时,你不需要指定它或测试,但是保证在任何真实的生产工作中使用你的安装之前,设置它。
看看scripts/mysql_install_db
脚本,看它如何安装缺省的权限。你可用它作为一个研究如何增加其他用户的基础。
如果你想要初始的权限不同于上面描述的那些,在你运行mysql_install_db
之前,你可以修改它。
为了完全重建权限表,删除在包含mysql
数据库的目录下所有“*.frm”,“*.MYI”和“*.MYD”文件。(这是在数据库目录下面命名为“mysql”的目录,当你运行mysqld --help
时,它被列出。)然后运行mysql_install_db
脚本,可能在首先编辑它拥有你想要的权限之后。
注意:对于比MySQL 3.22.10旧的版本,你不应该删除“*.frm”文件。如果你偶然做了,你应该在运行mysql_install_db
之前你的MySQL分发中拷回它们。