Mysql之访问控制与权限管理

一、访问控制

数据库服务器通常包含有重要的数据,这些数据的安全和完整可通过访问控制来维护。访问控制实际上就是为用户提供且仅提供他们所需的访问权。
mysql的用户账号及相关信息存储在名为mysql的数据库(系统)中,其中的user表包含了所有用户的账号,user表中的user列存储用户的登录 名。可以使用下面的sql语句查看数据库的使用者账号:

select user from mysql.user;

这里写图片描述

创建用户账号

成功安装了mysql服务器后,系统会创建一个名为root的用户,root用户拥有对整个mysql服务器完全控制的权限。为了避免恶意用户冒名使用root账号操控数据库,通常需要创建一系列具备适当权限的账号,而尽可能地不用或少用root账号登录系统,以此来确保数据的安全访问。
创建用户名为zhangsan的新用户,口令为明文123:

create user'zhangsan'@'localhost'identified by'123';

这里写图片描述
如果想对明文123进行加密可以使用password()函数,它加密后返回的是散列值:

select password(123);

这里写图片描述

则此时的创建新用户的语句就为:

create user 'zhangsan'@'localhost'identified by password'上面通过password()函数加密的散列值';

删除用户

注意必须明确给出该账号的主机名

drop user zhangsan@localhost;

修改用户账号

rename user'zhangsan'@'localhost'to'lisi'@'localhost';

修改用户口令(密码)

新口令必须传递到password()中进行加密,或者是已经加密过的口令值(此时要加上引号)。
将用户zhangsan的口令修改成明文“hello”对应的散列值:

set password for 'zhangsan'@'localhost'=password('hello');

二、账户权限管理

新创建的用户账号没有访问权限,只有登录到mysql服务器,不能执行任何数据库操作,我们可以用下面的sql语句查看新创建的用户zhangsan的权限:

show grants for 'zhangsan'@'localhost';

这里写图片描述
根据输出结果,可以看到用户zhangsan仅有一个权限usage on 星号.星号,表示该用户对任何数据库和任何表都没有权限。
所以需要为该用户分配适当的访问权限。

权限的授予

权限的授予通过grant语句实现。下面是一些实例:

grant select(cust_id,cust_name)
    on mysql_test.customers
    to'zhangsan'@'localhost';--授予在数据库mysql_test的表customers上拥有对列cust_id和列cust_name的select权限
grant select ,update
    on mysql_test.customers
    to 'liming'@'localhost'identified by'123';--新建一个用户为liming,并授予其在数据库mysql_test的表customers上拥有select和update的权限
grant all
    on mysql_test.*
    to'zhangsan'@'localhost';--授予可以在数据库mysql_test中执行所有操作的权限
grant create user
    on *.*
    to'zhangsan'@'localhost';--授予系统中已存在用户zhangsan拥有创建用户的权限

权限的转移与限制

授予当前系统中一个不存在的用户zhou在数据库mysql_test的表customers上拥有select 和update 的权限,并允许其将自身的这个权限授予其他用户(通过with grant option):

grant select,update
    on mysql_test.customers
    to'zhou'@'localhost'identified by'123'
    with grant option;

如果上面with子句后面跟的是max_queries_per_hour count、
max_updates_per_hour count、
max_connections_per_hour count、
max_user_connections count
中的某一项,则该grant语句可用于限制权限

grant delete
    on mysql_test.customers
    to 'zhangsan'@'localhost'
    with max_queries_per_hour 1;--每小时只能处理一条delete语句的权限

权限的撤销

使用revoke可以实现权限的撤销,而不会删除用户

revoke select 
    on mysql_test.customers
    from'zhangsan'@'localhost';--回收用户zhangsan在数据库mysql_test的表customers上的select权限

完结

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 用户权限: MySQL 用户权限是通过授权来管理的。MySQL的授权机制基于用户名、主机和操作权限。可以使用GRANT命令授权用户执行特定操作,可以使用REVOKE命令撤销授权。MySQL也提供了精细的权限控制,可以精确到表、列级别的授权。 MySQL 访问控制MySQL 访问控制可以通过以下方式实现: 1. 使用MySQL用户和主机访问控制机制,限制哪些主机可以连接到MySQL服务器,哪些用户可以访问MySQL服务器。 2. 使用防火墙限制MySQL服务器的访问,只允许特定IP地址的客户端连接到MySQL服务器。 3. 使用SSL/TLS和SSH等协议,保证MySQL服务器与客户端之间的通信安全。 MySQL 网络安全: MySQL网络安全主要包括以下几个方面: 1. 防火墙:限制MySQL服务器的访问,只允许特定IP地址的客户端连接到MySQL服务器。 2. 数据传输加密:使用SSL/TLS等协议保证MySQL服务器与客户端之间的通信安全。 3. 定期更新软件和补丁:及时更新MySQL软件和补丁,修复已知的安全漏洞。 4. 强密码策略:使用复杂的密码,包括大小写字母、数字和特殊字符,避免使用常用密码。 5. 限制用户权限:只授权用户必要的操作权限,避免用户误操作或恶意操作导致数据泄露或损坏。 MySQL 备份策略: MySQL备份有以下几种方式: 1. 数据库级别备份:使用mysqldump命令备份整个数据库或部分数据库。 2. 表级别备份:使用mysqldump命令备份单个表或多个表。 3. 增量备份:备份最近一次完整备份之后的数据变更。 4. 实时备份:使用MySQL的复制机制实现实时备份。 5. 存储引擎级别备份:使用不同的存储引擎提供的备份功能,如InnoDB、MyISAM等。 备份策略应该根据业务需求和数据量大小来制定,例如频繁更新的数据可以采用增量备份,而静态数据可以采用整个数据库备份。同时,备份文件应该存储在安全可靠的位置,避免数据丢失或泄露。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值