MySQL密码
初始化密码
当我们安装完 MySQL5.7 后,MySQL会帮我们创建随机密码 存放在 /var/log/mysqld.log 文件中,使用如下密码查看 初始化密码:
grep 'temporary password' /var/log/mysqld.log
更改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'l@Qq_789';
注意密码要设置足够复杂,否则无法会报出没有满足密码复杂性要求
密码更改无需重启且立即生效
MySQL登录密码的配置
关闭密码检查插件 和 密码过期的设置
vim /etc/my.cnf
在 [mysqld] 下 添加如下设置:
# 关闭验证密码强度插件
validate_password=off
# 设置密码过期时间, 0 表示永不过期
default_password_lifetime=0
字符编码
查看字符编码
show variables like '%char%';
更改字符编码
编辑 mysql 配置文件(/etc/my.cnf),在 【mysqld】节点下添加如下内容
character-set-server=utf8
collation-server=utf8_general_ci
重启 mysqld 服务
systemctl restart mysqld
每次更改配置文件都需要重启配置才生效
再次查看字符编码
授权本地用户
官网文档:https://dev.mysql.com/doc/refman/5.7/en/access-control.html
使用 root 用户登录 mysql
mysql -uroot -pl@Qq_789
创建用户授予所有权限
创建 zhangsan 用户,本地登录,密码 1q@w3e4R,授予所有权限以及授权权限的权限
CREATE USER 'zhangsan'@'localhost'IDENTIFIED BY '1q@w3e4R';
GRANT ALL ON *.* TO 'zhangsan'@'localhost' WITH GRANT OPTION;
创建 lisi 用户,abc.com域登录,密码 1q@w3e4R,授予所有权限以及授权权限的权限
CREATE USER 'lisi'@'%.abc.com' IDENTIFIED BY '1q@w3e4R';
GRANT ALL ON *.* TO 'lisi'@'%.abc.com' WITH GRANT OPTION;
本地登录测试
创建用户授予某库的所有权限
创建2个数据库 mydb01, mydb02
create database mydb01;
create database mydb02;
创建 wangwu 用户,本地登录,密码1q@w3e4R,授予mydb01 数据库所有权限
CREATE USER 'wangwu'@'localhost' IDENTIFIED BY '1q@w3e4R';
GRANT ALL ON mydb01.* TO 'wangwu'@'localhost';
本地登录测试
创建用户授予某库中的所有表部分权限
在上一步我们已经创建过 wangwu 这个用户, 这次我们要给 wangwu 用户添加权限
添加对 mydb02 库所有表有 “创建”、“插入”、“查询”,无“修改”、“删除”权限
授予权限
GRANT SELECT,INSERT,CREATE ON mydb02.* TO 'wangwu'@'localhost';
测试
权限查看
查看所有用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
查看某个用户的所有权限
show grants for 'wangwu'@'localhost';
移除权限
移除所有权限
移除 lisi 用户,abc.com 域上登录的所有权限(对所有库,所有表,所有权限)
REVOKE ALL ON *.* FROM 'lisi'@'%.abc.com';
移除对某数据库中的表创建和删除权限
移除 wangwu 用户,本地登录,对 mydb01 数据库 create drop 权限。
show grants for 'wangwu'@'localhost';
移除某用户对某表的具体权限
REVOKE INSERT,UPDATE,DELETE ON customer.addresses FROM 'custom'@'%.example.com';
删除用户
我们不需要某些用户连接上 mysql ,可以将该用户删除
例如:删除 wangwu 用户
DROP USER 'wangwu'@'localhost';
授权远程用户
创建用户,让其能在任意机器上连接 mysql,赋予该用户最大权限
CREATE USER 'lcy'@'%'IDENTIFIED BY '1q@w3e4R';
GRANT ALL ON *.* TO 'lcy'@'%' WITH GRANT OPTION;
如果只是希望从某个 IP地址连上MySQL,则只需要把 % 改成ip地址即可
效果: