目录
13.1.3 tables_priv表和columns_priv表
13.1权限表
13.1.1 user表
User表是MySQL中最重要的一个权限表,记录允许连接到服务器的帐号信息,里面的权限是全局级的。
User表有用户列,ENUM类型的权限列,SSL等安全列和最大次数的资源控制列。
一个用户在user表中被授予了delete权限,则可以删除所有数据库的任何记录。13.1.2 db表和host表
db表中存储了用户对某个数据库的操作权限,决定用户能从哪个主机存取哪个数据库。
host表中存储了某个主机对数据库的操作权限,配合db权限表对给定主机上数据库级操作权限做更细致地控制。
13.1.3 tables_priv表和columns_priv表
tables_priv表用来对表设置操作权限。
columns_priv表用来对表的某一列设置权限。
13.1.4 procs_priv表
procs_priv表可以对存储过程和存储函数设置操作权限。
13.2 账户管理
13.2.1 登录和退出MySQL服务器
mysql命令的常用参数以及登录和退出mysql服务器,常用参数:
-h 主机名
-u 用户名
-p 密码
-P 端口
数据库名
-e 执行SQL语句,并退出
13.2.2 新建普通用户,实际上是对user表的操作。
使用CREATE USER或GRANT语句,前提得有创建权限。
Create user username@host
[ identified by [password哈希设置密码] ‘password登陆明文密码’
| identified with 插件[ as ‘字符串参数’ ]
]
此方法创建的用户无任何权限,还需grant授权;
Grant方法:
直接操作MySQL 的user授权表。
Insert into mysql.user (host, user, password, [privilegelist权限列表])
Values (‘host’, ’user_name’, PASSWORD(‘password’), [权限列表])
13.2.3 删除普通用户,首先要拥有权限。
1.使用DROP USER user@host [,user2…]语句删除用户;无user@host则删除所有授权的用户。
2.使用DELETE from mysql.user where host =’host_name’ and user=’user_name’ 条件 语句删除用户
13.2.4 root用户修改自己的密码
- 使用mysqladmin命令在命令行指定新密码
Mysqladmin -u root -h localhost -p password ‘newpwd’
- 修改mysql数据库的user表
Update mysql.user set password = PASSWORD(‘rootpwd’) where user = ‘root’ and host=’localhost’;
- 使用SET语句修改root用户的密码
SET PASSWORD = PASSWORD(‘rootpwd’),重启生效。
13.2.5 root用户修改普通用户密码
1.使用SET password for ‘user@host’ = password(’newpwd’);语句修改普通用户的密码
2.使用UPDATE mysql.user SET password=PASSWORD(‘newpwd’) where 条件 语句修改普通用户的密码
3.最好使用GRANT语句修改或指定用户的密码,前提有grant权限全局级别。
GRANT USAGE ON *.* TO ‘someuser’@’%’ identified by ‘newpwd’;
这样可以修改密码不影响用户权限;
13.2.6 普通用户修改密码
普通用户登录MySQL服务器后,通过SET语句设置自己的密码。
SET PASSWORD =
PASSWORD(‘newpassword’);
13.2.7 root用户密码丢失的解决办法
- 使用--skip-grant-tables选项启动MySQL服务
非windows需切换到MySQL的bin目录,
Mysqld 命令:mysql --skip-grant-tables
MySQLd-nt命令:MySQLd-nt --skip-grant-tables
Linux中MySQLd_safe和/etc/init.d/mysql命令启动MySQL服务;
Mysqld_safe --skip-grant-tables user=mysql或者
/etc/init.d/mysql start-mysql --skip-grant-tables
2.使用root用户登录启动MySQLd进程和重新设置密码
3.加载权限表,新密码生效。
FLUSH PRIVILEGES;
13.3 权限管理,实际上就是权限表的管理
13.3.1 MySQL的各种权限
账户权限信息被存储在mysql数据库的全局user、数据库级db和host、表级别tables_priv、列层级columns_priv和子程序级procs_priv表中。在MySQL启动时,服务器将这些数据库表内容读入内存。
底片理解太少,急躁,筛选
不会使用音画分离剪辑
工作流混乱(文件媒体管理,文件统筹,矫正序列和压缩设置,输出)
简单回顾,清楚你的脚本之后在开始剪辑。
13.3.2 授权
授权就是为某个用户授于权限。合理的授权可以保证数据库的安全。MySQL中可以使用GRANT语句为用户授于权限。
13.3.3 收回权限
收回权限就是取消已经赋于用户的某些权限。收回用户不必要的权限可以在一定程度上保证系统的安全性。MySQL中使用REVOKE语句取消用户的某些权限。
Revoke 权限 on 表名 from ‘user_name’ @ ‘host_name’;
13.3.4 查看权限
SHOW GRANTS语句可以显示指定用户的权限信息,使用SHOW GRANT语句查看账户信息。
SHOW GRANTS FOR ‘user’@’host’ ;
*.*表示特权权限作用于所有数据库的所有数据表。Identified by password后面的为加密的密码。
也可以使用:select privileges_list from user where user= ‘user_name’, host = ‘host_name’;
13.4 访问控制
13.4.1 连接核实阶段
当连接MySQL服务器时,服务器基于用户的身份以及用户是否能通过正确的密码验证身份来接受或拒绝连接。
user表
3个字段(Host,User和Password)
13.4.1 请求核实阶段
建立了连接之后,对在此连接上进来的每个请求,服务器检查用户要执行的操作,然后检查是否有足够的权限来执行它。
user、db和host、tables_priv或columns_priv表
访问控制分为两个阶段:
- 核实连接请求
- 确认用户操作权限