当前位置:首页 > Mysql教程 > 列表

MySQL创建新用户并授权的示例

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-23 15:34:01 浏览: 评论:0 

对于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语句设置个用户的权限,运行这些命令:

  1. shell> mysql --user=root mysql 
  2. mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP 
  3.                ON bankaccount.* TO custom@localhost  IDENTIFIED BY 'stupid'
  4. mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP 
  5.                ON expenses.*  TO custom@whitehouse.gov IDENTIFIED BY 'stupid';//开源代码phpfensi.com 
  6. mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP 
  7.                ON customer.* TO custom@'%'  IDENTIFIED BY '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'@'%'; 查看.

Tags: MySQL创建新用户 MySQL授权

分享到: