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
程序类:针对 FUNCTIONPROCEDURETRIGGER
    CREATE
    ALTER
    DROP
    EXCUTE
库和表级别:针对 DATABASETABLE
    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 PRIVILEGESALL

范例 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;
 
posted @ 2021-03-12 18:05  huakai201  阅读(200)  评论(0)    收藏  举报