mysql8.0 新增用户_MySQL8.0创建用户及其配置

title: MySQL8.0创建用户及其配置

date: 2019-05-01

author: maxzhao

tags:

- MYSQL8

categories:

- MYSQL8

基本配置文件 my.cnf

[mysqld]

basedir = D:\mysql

datadir = D:\mysql\data

port = 3336

character-set-server = utf8mb4

# 下面这个选项是可以选择的

#default_authentication_plugin=mysql_native_password

[mysql]

default-character-set = utf8mb4

# 不使用密码进入

# skip-grant-table

[client]

default-character-set = utf8mb4

数据库初始化:mysqld --initialize

libicuuc.so.63最后说;

数据库初始化后随机密码在日志文件中hostname.err,需要使用该密码登录并修改密码。

alter user 'maxzhao'@'localhost' identified by "maxzhao";

alter user 'maxzhao'@'localhost' identified with mysql_native_password by "maxzhao";

alter user 'maxzhao'@'localhost' identified with caching_sha2_password by "maxzhao";

MySQL8默认的认证插件是caching_sha2_password,很多客户端都不支持,可将默认的认证插件修改为mysql_native_password,在配置文件/etc/my.cnf中配置default_authentication_plugin=mysql_native_password。也有一部分linux配置文件在/etc/mysql/my.cnf。

1、用户创建和授权(分离)

创建账号、分配权限

CREATE USER 'maxzhao'@'localhost' IDENTIFIED BY 'maxzhao';

grant all privileges on *.* TO 'maxzhao'@'localhost' WITH GRANT OPTION;

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

GRANT ALL PRIVILEGES ON *.* TO 'maxzhao'@'%' WITH GRANT OPTION;

CREATE USER 'maxzhao'@'localhost' IDENTIFIED BY 'maxzhao';

GRANT RELOAD,PROCESS ON *.* TO 'maxzhao'@'%';

Flush privileges;

-- #显示账号及权限相关信息

SHOW GRANTS FOR 'maxzhao'@'localhost';

SHOW CREATE USER 'maxzhao'@'localhost';

-- 查看用户

select host,user from mysql.user;

-- mysql8添加的新的默认用户

-- mysql.infoschema

2、认证插件更新

MySQL8.0 中默认的身份认证插件是caching_sha2_password,替代类之前的mysql_native_password 。

具体配置开篇降讲到了。

查看:

show variables like ‘default_authentication_plugin;

select user,host,plugin from mysql.user;

更新:

在配置文件中修改(如上)

alter user 'maxzhao'@'%' identified with mysql_native_password by 'maxzhao';

3、密码管理

MySQL8.0允许限制重复使用以前的密码,当用root权限修改密码时,不受权限``限制。

配置文件/etc/mysql/my.cnf或者/etc/my.cnf/中的参数(需要重启服务器生效):

# 不能与以前3次密码重复。

password_history=3

# 不能与3天内密码重复。

password_reuse_interval=3

# 默认为`off`,在修改密码时,是否需要当前密码。

password_require_current=ON

当password_require_current=ON的时候,修改密码的SQL语句为:

alter user maxzhao identified by 'maxzhao' replace 'maxzhao';

在环境变量中配置:

-- 当前会生效,重启后失效

set global

-- 8.0之后,会把环境变量持久话,重启后不会失效

set persist password_history=4

-- 查看变量

show variables like 'password_history';

MySQL8.0的持久化操作实现很简单,会把当前持久化的边境变量写入/var/lib/mysql/mysqld-auto.cnf中。

用户级别的变量

alter user 'maxzhao'@'localhost' password history 5;

-- 查看表结构

desc mysql.user;

-- 查看当前用户策略

select user,host,Password_reuse_history from mysql.user;

-- 查看mysql密码历史记录

desc mysql.password_history;

二进制日志

-- log_bin

-- 查看变量

show variables like '%log_bin%';

4、角色管理(新功能)

极大的简化了用户授权的管理。

授权命令

-- 创建角色

create role 'role_w';

select host,user,authentication_string from mysql.user ;

-- 给角色授权

grant insert,update,delete,select on *.* to 'role_w';

-- 创建用户

create user 'maxzhao_1' identified by 'maxzhao';

-- 授角色权限

grant 'role_w' to 'maxzhao_1';

-- 查看用户权限

show grants from 'maxzhao_1';

show grants from 'maxzhao_1' using 'role_w';

-- 用户:查询用户的当前角色,会发现当前尾NONE

select currnt_role();

-- 用户:我们需要设置当前角色

set role 'role_w';

-- 为用户设置默认角色

set default role 'role_w' to 'maxzhao_1';

set default tole all to 'maxzhao_1';

-- 查看用户角色关联信息

select * from mysql.default_role;

-- 用户所授予的角色信息

select * from mysql.role_edges;

撤销权限命令:

revoke insert,update on *.* from ‘role_w';

基本操作语句

-- 添加字段

alter table app_user add app_role_ids varchar(2000);

-- 修改字段

alter table app_user modify app_role_ids varchar(2000) null comment '用户角色表';

ArchLinux下安装的问题

libicuuc.so.63问题

这里在 arch linux下有可能会出现 mysqld: error while loading shared libraries: libicuuc.so.63: cannot open shared object file: No such file or directory,需要下载 icu63,用软件管理器下载很方便,或者添加 yaourt下载也很方便。

wget http://download.icu-project.org/files/icu4c/63.1/icu4c-63_1-src.tgz

tar -zxvf icu4c-63_1-src.tgz

cd icu/source

./configure --prefix=/usr

make

# make 需要 sudo pacman -S make

cd lib

cp libicuuc.so.63* /usr/lib

cp libicui18n.so.63* /usr/lib

cp libicudata.so.63* /usr/lib

文件报错问题

cd /var/lib/mysql/

rm *

mysqld --initialize-insecure

启动报错

# [InnoDB] The innodb_system data file 'ibdata1' must be writable

chown -R mysql:mysql /usr/lib/mysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值