新建账户:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> IDENTIFIED BY 'monty' WITH GRANT OPTION; 授予用户monty一切权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> IDENTIFIED BY 'monty' WITH GRANT OPTION;授予用户monty一切权限,服务器不同
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON menagerie.*
-> TO 'custom'@'localhost'
-> IDENTIFIED BY 'custom'; 授予用户custom对数据库menagerie某些权限
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON capb.products
-> TO 'capb'@'localhost'
-> IDENTIFIED BY 'capb'; 授予用户capb对数据库capb的表products某些权限
mysql> GRANT SELECT,UPDATE
-> ON cap.products
-> TO 'cap'@'localhost'
-> IDENTIFIED BY 'cap'; 授予用户cap对数据库cap的表products某些权限
mysql> GRANT USAGE ON *.* TO 'gxj'@'localhost' identified by '5201314';创建用户gxj,但不授予任何权限,相当于空账户。
除了grant语句,还可用insert创建账户,管理员进入mysql后,use mysql,在表user中插入账户信息即可,当你用INSERT创建账户后腰使用FLUSH PRIVILEGES告诉服务器重读授权表。否则,只有重启服务器后更改方会被注意到。使用 GRANT,则不需要使用FLUSH PRIVILEGES。这种方法不推荐,有兴趣的读者可查阅相关资料。
删除账户:
需以如root等管理员权限进入MySQL
mysql>use mysql
mysql>select * from user; //查看所有账户
要删除某个账户,只需删除mysql表user中对应的记录,如删除'cap'@'localhost'的用户:
mysql>delete from user where Host='localhost' and User='cap';
账户密码修改:
如root身份的管理员修改其他账户的密码,首先进入mysql,如修改用户cap的密码
mysql>set password for 'cap'@'localhost'=password('5201314');
还可以在全局级别使用GRANT USAGE语句(在*.*)来指定某个账户的密码而不影响账户当前的权限:
mysql> GRANT USAGE ON *.* TO 'cap'@'localhost' IDENTIFIED BY '5201314';
一般情况下最好使用上述方法来指定密码,你还可以直接修改user表:
mysql> UPDATE user SET Password = PASSWORD('custom')
· -> WHERE Host = 'localhost' AND User = 'custom';
· mysql> FLUSH PRIVILEGES;
最后一句mysql> FLUSH PRIVILEGES;不可少,否则更改不起作用。
普通用户无权利修改其他用户的密码,但可修改自身的密码,出可采用以上方法外,还可简化,如用户cap修改自身的密码
mysql>set password for 'cap'@'localhost'=password('5201314');
简化:
mysql>set password=password('5201314');
(修改密码均采用password函数加密。使用grant语句不用password函数,是因为grant语句能够自行加密。)
修改账户名称:
一般来说没必要修改账户名称,当然硬要修改的话也可以,同样只要进入mysql,修改mysql的user表即可,在此不详述。
限制账户资源
在MySQL较高版本中,你可以为具体账户限制下面的服务器资源:
· 账户每小时可以发出的查询数
· 账户每小时可以发出的更新数
· 账户每小时可以连接服务器的次数
创建账户的同时限制账户资源,如:
mysql> GRANT ALL privileges ON cap.* TO 'cap'@'localhost'
-> IDENTIFIED BY '5201314'
-> WITH MAX_QUERIES_PER_HOUR 20 //限制每小时查询次数
-> MAX_UPDATES_PER_HOUR 10 //限制每小时更新数据库的次数
-> MAX_CONNECTIONS_PER_HOUR 5 //限制每小时链接数据库的次数
-> MAX_USER_CONNECTIONS 2; //限制用户同时连接的数量
要想设置或更改已有账户的限制,在全局级别使用GRANT USAGE语句(在*.*)。下面的语句可以将cap的查询限制更改为100:
mysql> GRANT USAGE ON *.* TO 'cap'@'localhost'
-> WITH MAX_QUERIES_PER_HOUR 100;
要想将所有账户当前的记数重设为零,可以执行FLUSH USER_RESOURCES语句。还可以通过重载授权表来重设记数(例如,使用FLUSH PRIVILEGES语句或mysqladmin reload命令)。