一般一个使用mysql数据库的网站都要在mysql中创建一个用户来对数据库进行各种操作,这样可以增强安全性。创建mysql用户的方法有好几种:

 

1.grant 命令来创建,比如创建一个test的用户(密码为test),能在本地对test数据库下的所有表进行查看,插入,修改,删除的操作,则命令如下:

grant select,insert,update,delete on test.* to 'test'@'localhost' identified by 'test' with grant option;
flush privileges;

 


注意: 写道


1.如果要给予用户所有操作权限,则为 all privileges,其他要给什么权限就列出来,中间用逗号隔开
2.on 后面为授权的数据库及表,支持*(即所有),如全部数据库则为*.*,“.”前面为数据库名称,后面为表名称
3.to 后面的为用户名,要用引号,@后面为限制访问数据库的地址localhost本地,%指的任意地址,如果指定的地址则输入相对应的ip地址
4. by 后面的是密码了,要引起来


 

2.CREATE USER

CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ...

 

CREATE USER用于创建新的MySQL账户。要使用CREATE USER,您必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。对于每个账户,CREATE USER会在没有权限的mysql.user表中创建一个新记录。如果 账户已经存在,则出现错误。使用自选的IDENTIFIED BY子句,可以为账户给定一个密码。user值和 密码的给定方法和GRANT语句一样。特别是,要在纯文本中指定密码,需忽略PASSWORD关键词。要把 密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD。

 

3.直接操作MySQL授权表
除了GRANT,你可以直接用INSERT语句创建相同的账户,然后使用FLUSH PRIVILEGES告诉服务器重载授权表。

mysql> INSERT INTO user -> VALUES('localhost','monty',PASSWORD('some_pass'), 
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user -> VALUES('%','monty',PASSWORD('some_pass'), 
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost',User='admin', -> Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password) -> VALUES('localhost','dummy','');mysql> FLUSH PRIVILEGES;

 

当你用INSERT创建账户时使用FLUSH PRIVILEGES的原因是告诉服务器重读授权表。否则,只有重启服务器后更改方会被注意到。使用 GRANT,则不需要使用FLUSH PRIVILEGES。

用INSERT使用PASSWORD()函数是为了加密密码。GRANT语句为你加密密码,因此不需要PASSWORD()。

'Y'值启用账户权限。对于admin账户,还可以使用更加可读的INSERT扩充的语法(使用SET)。

在为dummy账户的INSERT语句中,只有user表中的Host、User和Password列记录为指定的值。没有一个权限列为显式设置,因此MySQL将它们均指定为 默认值'N'。这样等同于GRANT USAGE的操作。

请注意要设置超级用户账户,只需要创建一个权限列设置为'Y'的user表条目。user表权限为全局权限,因此其它 授权表不再需要条目。

 

其他的方法都大同小异,一般第一种方法用的最多。