创建用户的语句基本格式为:
create user if not exists ‘username’@’ip’ identified with mysql_native_password by pwd
创建仅本地localhost访问用户
方法:create user if not exists ‘username’@’localhost’ identified with mysql_native_password by pwd
示例,如下语句创建只能在本机localhost登陆访问数据的用户user_local。
create user if not exists 'user_local'@'localhost' identified with mysql_native_password by '6xJIugYIEfs6zMY5'
该方法创建的
- 用户名为user_local。
- ip为localhost,即只能在本机上访问数据。
- 密码为6xJIugYIEfs6zMY5。
- 身份验证方式为默认的mysql_native_password。
创建指定ip访问用户
方法:通过设置ip范围,以通配符%表示任意主机ip。
示例,如下语句创建只能在10.123打头的ip登陆访问数据的用户user_ip_limit。
create user if not exists 'user_ip_limit'@'10.123.%.%' identified with mysql_native_password by '6xJIugYIEfs6zMY5'
创建任意ip访问用户
方法:以通配符%表示任意主机ip。
示例,如下语句创建可以在任意ip登陆访问数据的用户user_no_limit。
create user if not exists 'user_no_limit'@'%' identified with mysql_native_password by '6xJIugYIEfs6zMY5'
设置密码有效期
在工作开发中,会出现以下场景。
场景1:要求开发人员首次必须修改密码才能继续使用。
场景2:开发人员长时间使用同一个密码会存在安全风险,则我们可以指定其每隔90天必须修改一次密码才能继续使用。
首次必须修改密码
针对场景1,我们创建一个有过期密码的用户,当开发人员第一次登陆并尝试任何语句时,都会抛出错误。只有当其通过「alter user」语句重置密码后才能继续使用mysql。
方法:创建用户时增加了关键词「password expire」 格式:create user ‘username’@’ip’ identified with mysql_native_password by pwd password expire;
- 创建用户
create user 'developer'@'%' identified with mysql_native_password by 'S&oMWhhIPax!z1Z9' password expire;
由于创建用户时增加了关键词「password expire」,第一次登陆时,执行任何语句都会抛出错误,开发人员必须使用以下语句更新密码。
alter user 'developer'@'%'
identified with mysql_native_password by '4!qosZ2&E1nc3*JJ';
每隔90天必须修改一次密码才能继续使用
针对场景2,我们要求用户每隔90天更改一次密码。
方法:alter user ‘username’@’ip’ password expire interval 90 day;
示例代码如下,先创建好一个用户,再使用alter语句设置。
alter user 'developer'@'%' password expire interval 90 day;
备注
- 创建用户时,当前登录使用的用户必须拥有创建用户的权限。如root、dbadmin(自己创建)用户。
- 随机生成密码方式,可以使用生成随机密码网站在线生成。
- 其他常用参数
- max_queries_per_hour,用户每小时执行的最大查询数
- max_updates_per_hour,用户每小时执行的最大更新次数
如,
create user if not exists 'readonly'@'localhost'
identified with mysql_native_password by 'readonlyuser'
with max_queries_per_hour 500
max_updates_per_hour 100;
以上内容进行解释:
- 第1行指定了用户名和限制IP范围的访问。如该句表示创建一个名为readonly的用户,且该用户只能从localhost进行访问
- 第2行为用户创建密码为「readonlyuser」。
- 第3行表示用户每小时执行的最大查询数为500,该部分可以不设置。
- 第4行表示用户每小时执行的最大更新次数为100,该部分亦可不进行设置,保持默认即可。