MySQL用户管理类问题

本文介绍了MySQL数据库的用户管理,包括如何定义和创建账号,账号授权的详细步骤,强调了保证账号安全的重要性,如最小权限原则,密码策略,并提到了数据库账号的迁移方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何在给定场景下为某用户授权?

如何定义MySQL数据库账号

账号组成

用户名@可访问控制列表

  1. %:表示可以从所有外部主机访问
  2. 192.168.1.%:表示可以从192.168.1网段访问
  3. localhost:表示可以从DB服务器本地访问

注意:

  • MySQL5.7之前用户名长度限制为最多16字节,MySQL5.7之后用户名长度限制为最多32字节。
  • %不包括localhost,即希望从DB服务器本地访问需要显式指定localhost进行授权
  • 未指定可访问控制列表时,默认为%,非常不安全。
  • 如果一个用户名有多个不同的可访问控制列表对应的不同账号时,MySQL会进行最精确匹配。
  • 客户端使用账号时只需要指定用户名,而可访问控制列表部分会由MySQL客户端自动识别补全。

账号创建

使用CREATE USER命令
CREATE USER user@ip IDENTIFIED BY 'password';
注意: MySQL5.7之前可以使用GRANT命令为账号授权的同时创建账号,但5.7之后不能如此做。只能先进行创建,再进行授权。

如何为账号授权

常用的账号权限

类别语句说明
AdminCREATE USER建立新的用户的权限
AdminGRANT OPTION为其他用户授权的权限
AdminSUPER管理服务器的权限
DDLCREATE新建数据库、表的权限
DDLALTER修改表结构的权限
DDLDROP删除数据库、表的权限
DDLINDEX建立和删除索引的权限
DMLSELECT查询表中数据的权限
DMLINSERT向表中插入数据的权限
DMLUPDATE更新表中数据的权限
DMLDELETE删除表中数据的权限
DMLEXECUTE执行存储过程的权限

可用show privileges;查看当前MySQL所支持的权限列表

账号授权

  • 使用GRANT命令对用户授权
    GRANT SELECT,INSERT,UPDATE,DELETE ON db.tb TO user@ip;
  • 使用REVOKE命令收回用户已有的权限
    REVOKE DELETE ON db.tb FROM user@ip;

如何保证数据库账号的安全?

权限

最小权限原则

  • 不要设置可访问控制列表为%
  • 如果要从外网访问,需要考虑SSL链路保证安全
  • 数据库表权限按照所需最小进行授权

密码

密码不要上传或保存到公有git,也不要写到代码中或代码内的配置中,应集中到配置服务中进行管理。

密码强度策略

  • 建议使用16位长度的随机字符
  • 如果要用特殊符号需考虑外部程序代码能否支持

密码过期+限制历史密码重用次数原则

注意:

  • MySQL8.0之后支持此功能。
  • 密码过期不影响已建立好的连接。
  • 如果要使用此功能,需要保证外部程序支持动态获取配置密码并刷新使用。

如何迁移数据库账号?

  1. 导出用户建立及授权语句
    使用percona公司提供的工具pt-show-grants
    pt-show-grants u=root,p=password,h=localhost
  2. 在目的实例上执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值