4.2 授权和取消
MySQL用户管理:
相关数据库和表
元数据数据库:mysql 系统授权表:
db, 存储授权用户对数据库的访问权限
host,
user,存储授权用户的访问权限
columns_priv, 存储授权用户对字段的访问权限
tables_priv, 存储授权用户对表的访问权限
procs_priv, proxies_priv
用户账号:'USERNAME'@'HOST'
如何对字段设置权限: GRANT ALL (col1, col2, col3) ON mydb.mytable TO 'user'@'host'; #mydb.mytable 表示mysql数据库下的mytable表, col1, col2, col3表示mytable表中的列名
利用 MySQL proxies_priv(模拟角色)实现类似用户组管理 角色(Role)可以用来批量管理用户,同一个角色下的用户,拥有相同的权限。 MySQL5.7.X以后可以模拟角色(Role)的功能,通过mysql.proxies_priv模拟实现
创建用户:
CREATE USER 'USERNAME'@'HOST' [IDENTIFIED BY 'password'];
用户重命名:RENAME USER
RENAME USER old_user_name TO new_user_name;
删除用户:
DROP USER 'USERNAME'@'HOST‘
修改密码:
SET PASSWORD FOR 'user'@'host' = PASSWORD(‘password'); update mysql.user set authentication_string=password('123456') where user='root'; #此方法需要执行下面指令才能生效: FLUSH PRIVILEGES;
破解root密码:
密码忘了怎么办? 1:停止MySQL服务程序 2:跳过授权表启动MySQL服务程序 skip-grant-tebles ——》写入/etc/my.cnf配置文件 3:重设root密码(更新user表记录) 4:以正常方式重启MySQL服务程序
1.service mysqld stop 2.cat /etc/my.cnf [mysqld] ... skip-grant-tebles ... 3.service mysqld start mysql>update mysql.user set authentication_string=password('centos') where user='root'; 4.注释skip-grant-tebles 并重新启动
权限管理:
权限类别
    管理类
    程序类
    数据库级别
    表级别
    字段级别
管理类: CREATE USER FILE SUPER SHOW DATABASES RELOAD SHUTDOWN REPLICATION SLAVE REPLICATION CLIENT LOCK TABLES PROCESS CREATE TEMPORARY TABLES
程序类:针对 FUNCTION、PROCEDURE、TRIGGER CREATE ALTER DROP EXCUTE
库和表级别:针对 DATABASE、TABLE ALTER CREATE CREATE VIEW DROP INDEX SHOW VIEW WITH GRANT OPTION:能将自己获得的权限转赠给其他用户
数据操作 SELECT INSERT DELETE UPDATE
字段级别 SELECT(col1,col2,...) UPDATE(col1,col2,...) INSERT(col1,col2,...)
所有权限 ALL PRIVILEGES 或 ALL
范例 grant
GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost‘; GRANT ALL ON wordpress.* TO wordpress@'192.168.8.%' IDENTIFIED BY 'magedu'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.8.%' IDENTIFIED BY 'root' WITH GRANT OPTION;
范例 取消授权:REVOKE
REVOKE DELETE ON testdb.* FROM 'testuser'@‘172.16.0.%’;
查看指定用户获得的授权
Help SHOW GRANTS SHOW GRANTS FOR 'user'@'host'; SHOW GRANTS FOR CURRENT_USER[()];
注意:MariaDB服务进程启动时会读取mysql库中所有授权表至内存
(1) GRANT或REVOKE等执行权限操作会保存于系统表中,MariaDB的服务进程通常会自动重读授权
表,使之生效
(2) 对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表:mysql>
FLUSH PRIVILEGES;
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号