MYSQL 用户的受权
为何要受权?
MYSQL 的默认用户是 root ,因为 root 的权限太大,也是为了安全方面考虑,通常只在管理数据库的时候才用,若是在项目中要链接一个MYSQL数据库,则建议新建一个权限较小的用户
做用:限制指定的用户能够登录哪台主机、访问哪一个数据库和对某个数据库有什么样的权限。mysql
1、建立用户 (mysql 不区分大小写) 命令格式: create user "username"@"host" identified by "password"; --username 你将建立的用户名 --host 指定该用户能够在哪一个主机上登录,若是是本地用户则能够用localhost,若是想让该用户能够任意远程主机登录,则能够使用通配符 “%” --password 该用户的密码,密码能够为空,为空则表明用户不须要密码就能够登录 下面写几种例子: create user "china"@"192.168.8.128" identified by "123456"; create user "china"@"localhost" identified by "123456"; create user "china"@"%" identified by "123456"; create user "china"@"%" identified by ""; create user "china"@"%";
2、受权sql
命令的格式: grant privileges on dataname.tablename to "username"@"host" ; --privileges 用户的权限,如 select insert update 等, 若是要授予全部权限的话就使用 all --dataname.tablename 库.表名 指定该用户对哪一个数据库的表有操做的权限,若是要授予该用户对全部数据库和表的相应操做权限则可用*表示, 如*.* 在客户端登录时: mysql -h"服务端的IP" -u"指定的用户" -p"密码" grant select,insert on db1.table1 to "china"@"localhost" ; grant all on db1.table1 to "chian"@"localhost"; 注意:用以上名令受权的用户是没有受权的权限,让该用户拥有受权的权限,能够在后面加上 with grant option 例子:grant all on db1.table1 to "china"@"localhost" with grant option;
3、设置与更改用户密码数据库
命令格式: set password for "username"@"host" = password ("new password"); 这是未登录的用户 set password = password ("new password");
4、撤销用户的权限缓存
命令格式: revoke privileges on db1.table1 from "username"@"host"; 例子: revoke select on *.* from "china"@"%"; 注意: 撤销权限后,用户名会保存下来,但若在撤销权限前把用户给删除了的话,那么用户的权限也会删除
5、删除用户安全
命令格式: drop user "username"@"host";
附录:
查看用户的权限: show grants for "username";服务器
权限列表:
ALTER: 修改表和索引。
CREATE: 建立数据库和表。
DELETE: 删除表中已有的记录。
DROP: 抛弃(删除)数据库和表。
INDEX: 建立或抛弃索引。
INSERT: 向表中插入新行。
REFERENCE: 未用。
SELECT: 检索表中的记录。
UPDATE: 修改现存表记录。
FILE: 读或写服务器上的文件。
PROCESS: 查看服务器中执行的线程信息或杀死线程。
RELOAD: 重载受权表或清空日志、主机缓存或表缓存。
SHUTDOWN: 关闭服务器。
ALL: 全部权限,ALL PRIVILEGES同义词。
USAGE: 特殊的 "无权限" 权限。
用 户帐户包括 "username" 和 "host" 两部分,后者表示该用户被容许从何地接入。tom@'%' 表示任何地址,默承认以省略。还能够是 "tom@192.168.1.%"、"tom@%.abc.com" 等。数据库格式为 db@table,能够是 "test." 或 ".*",前者表示 test 数据库的全部表,后者表示全部数据库的全部表。
子句 "WITH GRANT OPTION" 表示该用户能够为其余用户分配权限ide