9.1 身份认证
(1)IP+用户名作为身份验证
例如:
root@localhost:只允许在本机使用root用户登录
root@%:运行在任意机器上使用root用户登录
root@192.168.11.56:只运行在192.168.11.56主机上使用root用户登录
gjz@%:运行在任意机器上使用gjz用户登录
建立用户时,用于身份验证的IP地址,是连接你的服务的客户端的IP地址
例如:root@192.168.11.56,表示客户端在192.168.11.56的机器上可以访问你的mysql服务
而这个客户端,要连接你的服务时,-h后面的主机的IP地址是,服务器所在的机器的IP地址。
例如:mysql服务在192.168.11.11机器上,客户端在192.168.11.56上,那么客户端可以用root@192.168.11.56或root@%,连接时填写mysql -h192.168.11.11 -u root -p密码
(2)密码
9.2 分配权限 1、用户权限有4个权限级别(1)全局
(2)数据库
(3)表
(4)字段
依次校验权限,如果前面通过了,后面就不校验了:
全局 > 数据库 > 表 > 字段
注意:root@localhost,这个用户始终保留所有的全局权限。
2、查看账户权限show grants for '用户名'@'主机IP地址';
3、新建用户和删除用户
对应的语句:
CREATE USER '用户名'@'主机IP地址' IDENTIFIED BY '123456';
如果主机IP地址写:(1)192.168.29.53,就仅限于在该IP登录
(2)%,就表示可以从任意IP登录
drop user '用户名'@'主机IP地址';
4、授予和收回权限
对应语句:
GRANT 权限列表 ON *.* TO '用户名'@'主机IP地址'; #全局
GRANT 权限列表 ON 数据库名.* TO '用户名'@'主机IP地址'; #某个库
GRANT 权限列表 ON 数据库名.表格 TO '用户名'@'主机IP地址'; #某个库的某个表
GRANT 权限列表 ON 表名.* TO '用户名'@'主机IP地址'; #某个表的字段
例如:
GRANT SELECT ON *.* TO 'gao'@'192.168.29.53';
GRANT SELECT ON `test`.* TO 'gao'@'192.168.29.53';
GRANT UPDATE ON `test`.`t_department` TO 'gao'@'192.168.29.53';
GRANT UPDATE ON `t_department`.* TO 'gao'@'192.168.29.53';
GRANT SELECT (tid), INSERT (tid), UPDATE (tid), REFERENCES (tid) ON `1101db`.`course` TO 'gao'@'192.168.29.30';
收回权限:
revoke 权限列表 ON *.* from '用户名'@'主机IP地址';
revoke 权限列表 ON 数据库名.* from '用户名'@'主机IP地址';
revoke 权限列表 ON 数据库名.表格 from '用户名'@'主机IP地址';
revoke 权限列表 ON 表名.* from '用户名'@'主机IP地址';