MySQL操作规范(总结)

2015-07-16 12:07:10 · 作者: · 浏览: 1

用户权限管理


创建用户


命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';


说明:


Username所创建的用户名


host 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%.


password该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.


如: CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';


注:创建用户时也可以向user表中添加用户信息实现添加用户。


权限分配


MySQL权限原则:


权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:


1、只授予能满足需要的最小权限,防止用户越权。如用户只是需要查询,那就只赋予select权限,不要给用户赋予update、insert或者delete权限。


2、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。


3、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。


4、为每个用户设置满足密码复杂度的密码。


5、定期清理不需要的用户。回收权限或者删除用户。


MySQL权限一览:


MySQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等,这个可以从官方文档中的一个表来说明:


MySQL权限控制:


1、GRANT命令使用说明:


创建一个只允许从本地登录的超级用户fog,并允许将权限赋予别的用户,密码为:test123


mysql> grant all privileges on *.* to fog@'localhost' identified by "test123" with grant option;


GRANT命令说明:


ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等权限。


ON 用来指定权限针对哪些库和表。


*.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。


TO 表示将权限赋予某个用户。


fog@'localhost'表示fog用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户。


IDENTIFIED BY 指定用户的登录密码。


WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。


注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。


2、刷新权限


使用这个命令使权限生效,尤其是你对那些权限表user、db、host等做了update或者delete更新的时候。以前遇到过使用grant后权限没有更新的情况,只要对权限做了更改就使用FLUSH PRIVILEGES命令来刷新权限。


mysql> flush privileges;


3、查看权限


查看当前用户的权限:


mysql> show grants;


+---------------------------------------------------------------------+


| Grants for root@localhost? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |


+---------------------------------------------------------------------+


| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |


| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION? ? ? ? |


+---------------------------------------------------------------------+


查看某个用户的权限:


mysql> show grants for 'fog'@'%';


4、回收权限


mysql> revoke delete on *.* from 'fog'@'localhost';


5、删除用户


mysql> drop user 'fog'@'localhost';


Query OK, 0 rows affected (0.01 sec)


6、对账户重命名


mysql> rename user 'fog'@'%' to 'jim'@'%';


7、修改密码


1、用set password命令


mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');


2、用mysqladmin


[root@rhel5 ~]# mysqladmin -uroot -p123456 password 1234abcd


格式:mysqladmin -u用户名 -p旧密码 password 新密码


3、用update直接编辑user表


mysql> use mysql


mysql> update user set PASSWORD = PASSWORD('1234abcd') where user = 'root';


mysql> flush privileges;