mysql审计权限_mysql数据库环境之二: 用户权限审计管理

2.1)mysql的权限:

用户+IP

如:

itpux@127.0.0.1

itpux@localhost

itpux@192.168.31.51

itpux@192.168.31.%

2.2) mysql的各种权限

-- sql语句类

create Create_priv 数据库、表、索引

drop Drop_priv 数据库、表

grant option Grant_priv 数据库、表、存储过程、函数

references References_priv 数据库、表

alter 修改表

delete 删除表

index 索引

insert 插入

select 查询

update 更新

create view 创建视图

show view 查看视图

create temporary tables 创建临时表

lock tables 锁表

create user 创建用户

-- 存储过程

alter routine 修改存储过程

create routine 创建存储过程

execute 执行存储过程

-- 管理类权限

process 服务器管理

reload 重新加载权限表

replication client 服务器管理

replication slave 服务器管理

show databases 查看数据库

shutdown 关闭服务器

super 超级权限

2.3)显示权限

SHOW GRANTS FOR dbaadmin@'localhost';

GRANT ALL PRIVILEGES ON *.* TO 'dbaadmin'@'localhost' WITH GRANT OPTION

显示当前登录用户的权限

mysql> show grants for current_user;

+---------------------------------------------------------------------+

| Grants for root@localhost |

+---------------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |

| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |

+---------------------------------------------------------------------+

2 rows in set (0.00 sec)

2.4)创建用户并授权

第一种方式:先创建用户,然后授权

语法:

mysql> help create user

Name: 'CREATE USER'

Description:

Syntax:

CREATE USER [IF NOT EXISTS]

user [auth_option] [, user [auth_option]] ...

[REQUIRE {NONE | tls_option [[AND] tls_option] ...}]

[WITH resource_option [resource_option] ...]

[password_option | lock_option] ...

user:

(see )

auth_option: {

IDENTIFIED BY 'auth_string'

| IDENTIFIED WITH auth_plugin

| IDENTIFIED WITH auth_plugin BY 'auth_string'

| IDENTIFIED WITH auth_plugin AS 'auth_string'

| IDENTIFIED BY PASSWORD 'auth_string'

}

tls_option: {

SSL

| X509

| CIPHER 'cipher'

| ISSUER 'issuer'

| SUBJECT 'subject'

}

resource_option: {

MAX_QUERIES_PER_HOUR count

| MAX_UPDATES_PER_HOUR count

| MAX_CONNECTIONS_PER_HOUR count

| MAX_USER_CONNECTIONS count

}

password_option: {

PASSWORD EXPIRE

| PASSWORD EXPIRE DEFAULT

| PASSWORD EXPIRE NEVER

| PASSWORD EXPIRE INTERVAL N DAY

}

lock_option: {

ACCOUNT LOCK

| ACCOUNT UNLOCK

}

案例

CREATE USER itpux1@localhost;

CREATE USER itpux1@'%' IDENTIFIED BY 'itpux1';

该用户只能登录,没有权限

mysql> show grants for 'itpux1'@'localhost';

+--------------------------------------------+

| Grants for itpux1@localhost |

+--------------------------------------------+

| GRANT USAGE ON *.* TO 'itpux1'@'localhost' |

+--------------------------------------------+

第二种方式,通过grant创建一个有权限的用户

语法:

mysql> help grant

Name: 'GRANT'

Description:

Syntax:

GRANT

priv_type [(column_list)]

[, priv_type [(column_list)]] ...

ON [object_type] priv_level

TO user [auth_option] [, user [auth_option]] ...

[REQUIRE {NONE | tls_option [[AND] tls_option] ...}]

[WITH {GRANT OPTION | resource_option} ...]

GRANT PROXY ON user

TO user [, user] ...

[WITH GRANT OPTION]

object_type: {

TABLE

| FUNCTION

| PROCEDURE

}

priv_level: {

*

| *.*

| db_name.*

| db_name.tbl_name

| tbl_name

| db_name.routine_name

}

user:

(see https://dev.mysql.com/doc/refman/5.7/en/account-names.html)

auth_option: {

IDENTIFIED BY 'auth_string'

| IDENTIFIED WITH auth_plugin

| IDENTIFIED WITH auth_plugin BY 'auth_string'

| IDENTIFIED WITH auth_plugin AS 'auth_string'

| IDENTIFIED BY PASSWORD 'auth_string'

}

tls_option: {

SSL

| X509

| CIPHER 'cipher'

| ISSUER 'issuer'

| SUBJECT 'subject'

}

resource_option: {

| MAX_QUERIES_PER_HOUR count

| MAX_UPDATES_PER_HOUR count

| MAX_CONNECTIONS_PER_HOUR count

| MAX_USER_CONNECTIONS count

}

案例:

GRANT ALL PRIVILEGES ON *.* TO 'itpux2'@'%' IDENTIFIED BY 'itpux2';

授权的访问

on *.* ---- mysql.user表

on 库名.* ---- mysql.db表

on 库名.表名 ---- mysql.table_priv

on 库名.表名.列名 ---- mysql.columns_priv

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

+---------------------------------------------+

| Grants for itpux2@% |

+---------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'itpux2'@'%' |

+---------------------------------------------+

1 row in set (0.00 sec)

刷新权限

flush privileges;

2.5)授权案例

1)授权普通数据用户,具有查询、插入、更新、删除数据库所有表数据的权限

GRANT SELECT,INSERT,UPDATE,DELETE ON itpux.* TO 'itpux3'@'%' IDENTIFIED BY 'itpux3';

flush privileges;

[root@itpuxdb ~]# mysql -u itpux3 -h 192.168.31.51 -p

Enter password:

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| itpux |

+--------------------+

2 rows in set (0.00 sec)

2)开发人员授权 (创建表/索引/视图/存储过程)

create user dev@'%' identified by 'dev123456';

grant create,drop,alter,delete,update,insert,select,index,create view,show view,create temporary tables,lock tables,alter routine,create routine,execute on itpux.* to 'dev'@'%';

flush privileges;

mysql> show grants for dev@'%';

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Grants for dev@% |

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'dev'@'%' |

| GRANT REFERENCES,SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `itpux`.* TO 'dev'@'%' |

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

3)授权dba可以管理数据库所有权限

create user dbaadmin@'%' identified by 'dba123456';

grant all privileges on *.* to 'dbaadmin'@'%';

flush privileges;

4)针对单个列

grant select(deptno,dname) on itpux.dept to dev@'localhost'

flush privileges;

2.6)权限回收

mysql> help revoke

Name: 'REVOKE'

Description:

Syntax:

REVOKE

priv_type [(column_list)]

[, priv_type [(column_list)]] ...

ON [object_type] priv_level

FROM user [, user] ...

REVOKE ALL [PRIVILEGES], GRANT OPTION

FROM user [, user] ...

REVOKE PROXY ON user

FROM user [, user] ...

技巧: 把to改成from

2.8)删除用户

drop user itpux3@'%';

drop user itpux2@'%';

drop user itpux1@'localhost';

mysql> select host,user from mysql.user;

2.9)修改用户密码

第一种:知道原密码

A 通过修改mysql.user表

update mysql.user set authentication_string=PASSWORD('Lsf@8816') where user='root';

flush privileges;

B 通过alter user

mysql> alter user root@'localhost' identified by 'Aa123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

C 通过grant更改密码

mysql> grant usage on *.* to 'dbaadmin'@'%' identified by 'dba123456';

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

第二种:root密码忘记

停止数据库

在my.cnf添加--skip-grant-tables

启动数据库

登录数据库

update mysql.user set authentication_string=PASSWORD('Lsf@8816') where user='root';

flush privileges;

删除--skip-grant-tables

重启数据库

2.10)免密数据库登录

使用login-path

[root@itpuxdb ~]# mysql_config_editor set --login-path=dbaadmin --user=dbaadmin --password=dba123456 --host=localhost

mysql_config_editor: [ERROR] mysql_config_editor: option '--password' cannot take an argument

[root@itpuxdb ~]# mysql_config_editor set --login-path=dbaadmin --user=dbaadmin --password --host=localhost

Enter password:

[root@itpuxdb ~]# mysql_config_editor print --all

[dbaadmin]

user = dbaadmin

password = *****

host = localhost

[root@itpuxdb ~]# mysql --login-path=dbaadmin

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 22

Server version: 5.7.30-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

2.11)mysql角色管理

mysql5.7:proxies_priv

角色(role)可以批量管理用户,用一个角色下面的数据都有具有相同的权限

SHOW VARIABLES LIKE '%proxy%';

SET GLOBAL check_proxy_users=ON;

SET GLOBAL mysql_native_password_proxy_users=ON;

-- 如果永久打开,需要加到my.cnf,重启才能生效

-- 创建用户

CREATE USER 'itpux_dba';

CREATE USER 'itpux_a';

CREATE USER 'itpux_b';

CREATE USER 'itpux_c';

-- 权限映射

GRANT proxy ON itpux_dba TO itpux_a;

GRANT proxy ON itpux_dba TO itpux_b;

-- 给itpux_dba赋予实际权限

GRANT SELECT,INSERT,UPDATE ON itpux.* TO 'itpux_dba';

FLUSH PRIVILEGES;

-- 检查权限并设置

SHOW GRANTS FOR itpux_dba;

-- GRANT SELECT, INSERT, UPDATE ON `itpux`.* TO 'itpux_dba'@'%'

SHOW GRANTS FOR itpux_a;

-- GRANT PROXY ON 'itpux_dba'@'%' TO 'itpux_a'@'%'

SHOW GRANTS FOR itpux_b;

-- GRANT PROXY ON 'itpux_dba'@'%' TO 'itpux_b'@'%'

mysql> SELECT * FROM mysql.proxies_priv;

+-----------+---------+--------------+--------------+------------+----------------------+---------------------+

| Host | User | Proxied_host | Proxied_user | With_grant | Grantor | Timestamp |

+-----------+---------+--------------+--------------+------------+----------------------+---------------------+

| localhost | root | | | 1 | boot@connecting host | 0000-00-00 00:00:00 |

| % | itpux_a | % | itpux_dba | 0 | root@localhost | 0000-00-00 00:00:00 |

| % | itpux_b | % | itpux_dba | 0 | root@localhost | 0000-00-00 00:00:00 |

+-----------+---------+--------------+--------------+------------+----------------------+---------------------+

3 rows in set (0.00 sec)

2.11)mysql安全之审计

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
创建审计用户主要是为了对数据库及表进行查看权限,即可以执行show databases, show view和select语句。 具体实现步骤如下: 1. 使用以下命令在命令行中创建审计用户: ```mysql -uroot -proot -e "create user 'shenji'@localhost identified by 'shenji'" 2>/dev/null``` 2. 使用以下命令在命令行中创建审计用户的远程访问权限: ```mysql -uroot -proot -e "create user 'shenji'@'%' identified by 'shenji'" 2>/dev/null``` 这样就成功创建了一个名为'shenji'的审计用户,并且该用户拥有对数据库和表的查看权限。 需要注意的是,根据,在MySQL中,账户名的命名规则是有一定限制的。有关更多账户名的规则和限制,请参考提供的文档链接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql之用户三权分立](https://blog.csdn.net/weixin_43279032/article/details/104004215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [mysql数据库环境之二用户权限审计管理](https://blog.csdn.net/weixin_28452161/article/details/113295990)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值