配置mysql --user_mysql,账户配置

用户账户

root,初始化mysql后,有一个默认的root用户,会打印出初始化的root密码,第一次登陆时,强制要求修改root密码

启动时添加skip-grant-tables选项,然后修改root密码

或将skip-grant-tables加到/etc/my.cnf中,启动后修改root密码,然后在将这一条去掉

create user 'finley'@'localhost' identified by 'password';

create user 'finley'@'%.example.com' identified by 'password';

create user 'dummy'@'localhost';

create user gcb identified by 'gcb123'; -- 不跟主机名,允许在任何主机上登录

create user 'gcb'@'192.168.165.%' identified by 'gcb123'; --不带通配符的地址可以不加引号,但最后都加上,'a@ip'会被识别为一个用户名,注意

insert into mysql.user (host,user,password, ssl_cipher, x509_issuer, x509_subject) values('%','jifei',PASSWORD('jifei'), '', '', '');

没有密码的用户只能在本机登录

要在本机登录,用户必须有一个'user'@'locahost'的账户,用'user'@'%'在本机登录将被视为匿名用户

update user set password=password('root123') where user='root'; 只用于mariadb

alter user 'root'@'localhost' IDENTIFIED BY 'root123'; 默认使用caching_sha2_password加密方式

alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root123'; 使用老版的本地密码,有些程序连接要用

alter user user() identified by 'password'; user()函数获取当前登录的用户

alter user 'old_app_dev'@'localhost' identified by 'new_password';

flush privileges; 更新过权限后要刷新特权

mysqladmin -u user_name -h host_name password "password"

drop user 'finley'@'localhost';

show create user 'root'@'locahost';

授权

grant all on *.* to 'finley'@'localhost' with grant option;

show grants for 'admin'@'localhost';

revoke all on *.* from 'finley'@'%.example.com';

revoke create,drop on expenses.* from 'custom'@'host47.example.com';

角色

create role 'app_developer', 'app_read', 'app_write';

grant insert, update, delete on app_db.* to 'app_write';

grant 'app_developer' to 'dev1'@'localhost';

[mysqld]

mandatory_roles='role1,role2@localhost,r3@%.example.com' 强制授予所有用户指定的角色

set persist mandatory_roles = 'role1,role2@localhost,r3@%.example.com'; 运行时强制授予所有用户指定角色

show grants for 'rw_user1'@'localhost' using 'app_read', 'app_write'; 显示用户从指定角色中获取的授权

select current_role(); 当前登录用户的角色

set default role all to 'dev1'@'localhost', 'read_user1'@'localhost', 'read_user2'@'localhost'; 设置默认角色,后面所有启动的会话有效

set role all except 'app_write'; 设置启用的角色,本次会话有效

revoke role from user;

密码期限

支持内部和外部认证

[mysqld]

default_password_lifetime=180 ,对所有账户生效,密码时长,0表示永不过期

password_history=6,重设密码时禁止使用最近6个已用过的密码

password_reuse_interval=365,禁止使用365以内用过的密码

create user 'jeffrey'@'localhost' password expire interval 90 day; 90天过期

never,永不过期,default,使用系统默认值

create user 'jeffrey'@'localhost' password history 5 password reuse interval 365 day;

set persist default_password_lifetime = 180; 运行时设置

alter user 'jeffrey'@'localhost' password expire interval 90 day; 更新密码设置

密码健壮性

validate_password.check_user_name on,不允许密码中出现用户名

validate_password.dictionary_file,字典路径

validate_password.length,密码最短长度

validate_password.mixed_case_count,最小大小写字符的个数

validate_password.number_count,密码中数字的最小个数

validate_password.policy,密码策略级别,0,1,2

validate_password.special_char_count,特殊字符的个数

set global validate.password.policy = 0, -- 密码强度,1是中级,5.7中间的 . 改为 _

set global validate.password.length = 1;

密码认证插件

--default-auth=mysql_native_password,8.0之前使用native_password,8.0之后默认使用caching_sha2_password认证插件

default_authentication_plugin

修改密码的策略

[mysqld]

password_require_current=on,为off,用户修改密码时不需要输入原来的密码,为on时需要输入

create user 'jeffrey'@'localhost' password require current [optional]; 修改用户密码时可以但不必输入原密码

default,遵循全局配置

alter user 'jeffrey'@'localhost' identified by 'new_pwd' replace 'old_pwd'; 修改旧密码时填入新密码

登录失败锁定

create user 'u1'@'localhost' identified by 'password' failed_login_attempts 3 password_lock_time [3];

unbounded,无限时长

账户资源限制

max_user_connections,同一账户的最大连接数,为0不限制

create user 'francis'@'localhost' identified by 'frank'

with max_queries_per_hour 20 每小时最大20次查询

max_updates_per_hour 10 每小时最大20次更新

max_connections_per_hour 5 每小时5次连接

max_user_connections 2;

1975e067690f62858d7bfa190886d0d3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值