对于mysql数据库创建一个新用户然后给用户授权是一个通常要做到的方法,下面一聚教程小编与大家一起学习一下MySQL创建新用户并授权的方法。
为MySQL添加新用户的方法有两种:通过使用GRANT语句或通过直接操作MySQL授权表;比较好的方法是使用GRANT语句,更简明并且很少出错。GRANT语句的格式如下:
GRANT 权限 ON 数据库.数据表 TO 用户名@登录主机 IDENTIFIED BY “密码”
例如,添加一个新用户名为phpuser,密码为字符串“brophp”。让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先要以root用户登录,然后输入以下命令:
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO phpuser@”%”IDENTIFIED BY “brophp”
但这个新增加的用户是十分危险的,如果黑客知道用户phpuser的密码,那么他就可以在网上的任何一台计算机上登录你的MySQL数据库,并可以对你的数据为所欲为了。解决办法是在添加用户时,只授权在特定的一台或一些机器上登录。例如将上例改为只允许在localhost上登录,并可以对数据库mydb执行查询、插入、修改、删除等操作,这样黑客即使知道phpuser用户的密码,也无法从网络的其他机器上访问mydb数据库,就只能通过MYSQL主机上的Web页来访问了。输入的命令如下所示:
GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.*TO phpuser@localhost IDENTIFIED BY “brophp”
例子:增加一个用户custom,他能从主机localhost、server.domain和whitehouse.gov连接。他只想要从 localhost存取bankaccount数据库,从whitehouse.gov存取expenses数据库和从所有3台主机存取customer 数据库。他想要从所有3台主机上使用口令stupid。
为了使用GRANT语句设置个用户的权限,运行这些命令:
- shell>mysql--user=rootmysql
- mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP
- ONbankaccount.*TOcustom@localhostIDENTIFIEDBY'stupid';
- mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP
- ONexpenses.*TOcustom@whitehouse.govIDENTIFIEDBY'stupid';//开源代码phpfensi.com
- mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP
- ONcustomer.*TOcustom@'%'IDENTIFIEDBY'stupid';
权限信息用user、db、host、tables_priv和columns_priv表被存储在mysql数据库中(即在名为mysql的数据库中)
设置与更改用户密码
命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword");
例子: SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");
撤销用户权限
命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';
说明: privilege, databasename, tablename - 同授权部分.
例子: REVOKE SELECT ON *.* FROM 'pig'@'%';
注意: 假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%', 则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select 权限.
具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看.