转:mysql用户与权限

MYSQL用户与权限

http://www.cublog.cn/u3/118426/showart_2344972.html
 
在MYSQL中,你可以根据自己的需要定制不同的用户。比如,定制来自某些IP地址的用户可以访问,并且给这些
用户设置密码。搭配权限的设置,你还可以进一步限定用户的权限范围,比如说仅仅让一个用户只能访问某一个库,并且只能对这个数据库拥有insert和
select权限。
1.添加一个mysql用户
有两种方式来添加mysql用户:
①使用grant语句
②使用mysql授权表

实上,MYSQL中所有关于用户的信息都保存在名字为mysql的这个库中对应的表当中。使用GRANT语句添加用户,实际上是把你在语句中设定的内容写
入mysql库中对应的表里面。因此,直接操作mysql库中对应的表也可以添加用户。不过推荐大家使用GRANT语句来创建新用户,因为这样更加方便。
使用grant语句添加用户
mysql> GRANT ALL PRIVILEGES ON *.* TO 

‘aaa’@’192.168.0.254’


    -> IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
其中,ALL PRIVILEGES 就是所有权限的意思
      ON 语句指定这些权限应用于哪些库和表。*.*代表的是所有的库的所有表
      TO  确定了这些权限给与哪个用户,这里我们把权限赋予给

‘aaa’@’192.168.0.254’

这个用户,aaa是用户名,@符号后面确定了只允许该用户通过192.168.0.254这个ip地址访问。
      IDENTIFIED BY 语句是设定用户密码,在这里用户密码设定为123456
      WITH GRANT OPTION 的意思是允许aaa这个用户把它拥有的权限再赋予其他用户
2.删除一个用户
DROP USER语句用于删除一个或多个MySQL账户。要使用DROP USER,您必须拥有mysql数据库的全局CREATE USER权限或DELETE权限。
例:
mysql> DROP USER
aaa@192.168.0.254

;
3.mysql用户权限管理
刚才,我们使用了GRANT语句来创建用户。实际上,GRANT语句本身是具有双重用途的。当GRANT语句中指定的用户不存在时,将创建该用户并赋予权限;当GRANT语句中指
定的用户存在时,仅仅赋予该用户指定的权限。
在MYSQL中可以赋予用户很多种权限。通过刚才的例子,大家应该知道:想要赋予一
个用户权利,只要在GRANT语句的后面跟上权限就可以了。在下面的表格中列出了MYSQL
中可以为用户设定的权限和它们的含义:

mysql>grant all on bookshop.* to
aaa@192.168.0.254

;//定义了aaa用户只可以对bookshop有操作的权利
如果只允许aaa用户对bookshop数据库只能查看和添加,其他的什么也不能干,命令如下
mysql>grant select,insert on bookshop.* to
aaa@192.168.0.254

在赋予权限之后,不要忘记执行一下FLUSH PRIVILEGES命令刷新权限缓存,来让你的设置立即生效。
mysql> FLUSH PRIVILEGES;
如果你想对某个用户收回某些权限的话,就要用revoke语句,revoke语句和grant语句类似,例如收回aaa用户的select和insert权限
mysql> revoke select,insert on bookshop.* from
aaa@192.168.0.254

;
4.修改用户密码
修改用户密码的方法有很多种,首先介绍用grant后面跟identified by 语句后面写入新密码,例如:
mysql> grant usage on bookshop.* to
aaa@192.168.0.254

identified by ‘654321’;
//这里我们给了aaa一个usage权限,usage的意思就是没权限,然后这样我们就仅仅更该了aaa的密码,没有覆盖权限。
另一个方法是使用 update user 语句,使用这条语句必须切换到mysql库中,因为这条语句实际上就是更新库中的user表内的数据。例如,同样将aaa密码修改成654321
mysql> use mysql;
Database changed
mysql> update user set password=password(‘654321’) where user=”aaa”;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0

5.忘记root密码怎么办 
如果某些普通用户忘记了自己的密码的话,应对的方法很简单,给他重新设置一个密码就好了。可是如果你不小心忘记了root用户的密码,那真的是非常的糟糕。因为只有root用户自己才有权利更改root用户密码的权利。那么该怎么办呢?
首先你需要停掉mysql服务:
#service mysqld stop
或者KILL掉mysql进程
#killall -term mysql
接下来使用mysqld_safe这个命令加上—skip-grant-tables来重新启动mysql。
特别需要提醒你的是,这样启动mysql将允许任何人以root用户和空密码访问mysql服务器!因此,如果你不能断开网络连接的话,那么接下来的所有操作,你必须尽可能的快的去完成。
# mysqld_safe –skip-grant-tables &
# mysql
mysql> use msyql;
mysql> update user set password=password( ‘new_pass’) where user=”root”;
mysql> exit
# service mysqld restart

发表评论

电子邮件地址不会被公开。 必填项已用*标注