Referencia de recuperación de permisos de alto riesgo de la base de datos MySQL

1. Instrucción de operación básica

1. Ver la base de datos del sistema actual

# mysql -uroot -p
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| erp              |
+--------------------+
3 rows in set (0.00 sec)

2. Cambiar de base de datos

mysql> use erp;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

2. Preparación para la recuperación de permisos

1. Cuente todos los usuarios en el entorno actual (% significa que todas las máquinas son accesibles; 127.0.0.1, localhost significa que esta máquina es accesible)

mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+-----------------------------------------+
| query                                   |
+-----------------------------------------+
| User: 'root'@'%';                       |
| User: 'root'@'127.0.0.1';               |
| User: 'root'@'::1';                     |
| User: ''@'localhost';                   |
| User: 'root'@'localhost';               |
| User: 'erp'@'%';                       |
+-----------------------------------------+
5 rows in set (0.00 sec)

2, operaciones estadísticas que el usuario tiene permisos para el nombre de usuario erp, por ejemplo, de la siguiente manera

mysql> show grants for 'erp'@'%';
+------------------------------------------------------------------------------------+
| Grants for erp@%                                                         |
+------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'erp'@'%' IDENTIFIED BY PASSWORD '*******'      |
| GRANT ALL PRIVILEGES ON `ump`.* TO 'ump'@'%'                          |
+------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

3. Recuperación operativa de permisos de alto riesgo

1. Recupere todos los permisos o recupere un permiso determinado, como el permiso de eliminación

mysql> revoke all privileges on erp.* from 'erp'@'%';
mysql> revoke drop on erp.* from 'erp'@'%';
mysql> flush privileges;

Observaciones:
(1) Enumere algunos permisos de servidor especiales y sus descripciones de funciones:

super:拥有此权限允许用户终止任何查询;修改全局变量的SET语句;使用CHANGE MASTER,PURGE MASTER LOGS
shutdown:关闭数据库
show databases:查看数据库
replication client:查询master server、slave server状态
replication slave:查看从服务器
reload:拥有此权限才可执行flush [tables | logs | privileges]
process:拥有此权限才可以执行SHOW PROCESSLIST和KILL命令
file:拥有file权限才可以执行 select ..into outfile和load data infile…操作

(2) Autoridad del usuario ordinario y descripción de la función:

all:允许任何操作(usage权限不能被回收)
usage:只允许登录
alter:修改数据库的表
alter routine:修改/删除存储过程
create:创建表
create routine:创建存储过程
create temporary tables:创建临时表
create:创建新的数据库或表
create view:创建视图
delete:删除表数据
drop:删除数据库/表
event:创建/更改/删除/查看事件
execute:执行权限
grant option:将自身所拥有的权限授予其他用户
index:创建/删除索引
insert:添加表数据
lock tables:锁表
references:将其它表的一个字段作为某一个表的外键约束
select:查询表数据
show view:查看视图
trigger:创建触发器
update:更新表数据

2. Vuelva a autorizar los permisos necesarios

mysql> grant select,insert,alter,update,delete,create,execute on erp.* to 'erp'@'%' ;
mysql> flush privileges;

3. Confirmar permisos

mysql> show grants for 'erp'@'%';

4. Asuntos que requieren atención

1) Los permisos de archivo, proceso y super son peligrosos, no otorgue permisos a cuentas que no sean del administrador;

mysql> revoke file,process,super on erp.* from 'erp'@'%';

2) Verifique los permisos del servidor de uno o todos los usuarios y confirme que la cuenta normal no autoriza los tres permisos peligrosos anteriores

mysql> select * from mysql.user where user='erp'\G;
*************************** 1. row ***************************
                  Host: %
                  User: erp
              Password: *33F471D4D8A84CD6C0
           Select_priv: N
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N
         Shutdown_priv: N
          Process_priv: N
             File_priv: N
            Grant_priv: N
       References_priv: N
            Index_priv: N
            Alter_priv: N
          Show_db_priv: N
            Super_priv: N
 Create_tmp_table_priv: N
      Lock_tables_priv: N
          Execute_priv: N
       Repl_slave_priv: N
      Repl_client_priv: N
      Create_view_priv: N
        Show_view_priv: N
   Create_routine_priv: N
    Alter_routine_priv: N
      Create_user_priv: N
            Event_priv: N
          Trigger_priv: N
Create_tablespace_priv: N
              ssl_type: 
            ssl_cipher: 
           x509_issuer: 
          x509_subject: 
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: 
      password_expired: N
1 row in set (0.00 sec)
mysql> select * from mysql.user \G;

3), conceda un permiso de tabla, la información de permiso se almacena en la tabla mysql.tables_priv

mysql> grant select on dbname.tablename to 'username'@'%' with grant option;
mysql> select * from mysql.tables_priv;
select * from mysql.tables_priv;
+-----------+-----+-------+------------+----------------+---------------------+-------+
| Host | Db  | User  | Table_name  | Grantor | Timestamp | Table_priv | Column_priv |
+-----------+-----+-------+------------+----------------+---------------------+-------+
| % | dbname | username | tablename | root@localhost | 0000-00-00 00:00:00 | Select,Grant |             |
+-----------+-----+-------+------------+----------------+---------------------+-------+

4) Otorgue un permiso de campo determinado, la información del permiso se almacena en la tabla mysql.columns_priv

mysql> grant select(Column_name) on dbname.tablename to 'username'@'%' with grant option;
mysql> select * from mysql.columns_priv;
select * from mysql.columns_priv;
+-----------+-----+-------+------------+-------------+---------------------+----------+
| Host   | Db  | User  | Table_name | Column_name | Timestamp   | Column_priv |
+-----------+-----+-------+------------+-------------+---------------------+----------+
| % | dbname | username | tablename | Column_name | 0000-00-00 00:00:00 | Select|
+-----------+-----+-------+------------+-------------+---------------------+----------+

5) Cuando se usa el siguiente comando para reclamar permisos, solo se reclaman permisos globales. Otros permisos del usuario del nombre de usuario, como los permisos en la base de datos dbname, los permisos en la tabla tablename y los permisos en un determinado campo Column_name aún se mantienen.

mysql> revoke all privileges on *.* from 'username'@'localhost';

Entonces, para reclamar todos los permisos del usuario, use el siguiente comando

mysql> revoke all privileges,grant option from 'username'@'%';

5. Fin

Supongo que te gusta

Origin blog.51cto.com/8355320/2546644
Recomendado
Clasificación