MySQL密码

初始化密码

当我们安装完 MySQL5.7 后,MySQL会帮我们创建随机密码 存放在 /var/log/mysqld.log 文件中,使用如下密码查看 初始化密码:

  1. grep 'temporary password' /var/log/mysqld.log

image.png

更改密码

  1. ALTER USER 'root'@'localhost' IDENTIFIED BY 'l@Qq_789';

注意密码要设置足够复杂,否则无法会报出没有满足密码复杂性要求
image.png

密码更改无需重启且立即生效

MySQL登录密码的配置

关闭密码检查插件 和 密码过期的设置

  1. vim /etc/my.cnf

在 [mysqld] 下 添加如下设置:

  1. # 关闭验证密码强度插件
  2. validate_password=off
  3. # 设置密码过期时间, 0 表示永不过期
  4. default_password_lifetime=0

字符编码

查看字符编码

  1. show variables like '%char%';

image.png

更改字符编码

编辑 mysql 配置文件(/etc/my.cnf),在 【mysqld】节点下添加如下内容

  1. character-set-server=utf8
  2. collation-server=utf8_general_ci

重启 mysqld 服务

  1. systemctl restart mysqld

每次更改配置文件都需要重启配置才生效

再次查看字符编码

image.png

授权本地用户

官网文档:https://dev.mysql.com/doc/refman/5.7/en/access-control.html
使用 root 用户登录 mysql

  1. mysql -uroot -pl@Qq_789

创建用户授予所有权限

创建 zhangsan 用户,本地登录,密码 1q@w3e4R,授予所有权限以及授权权限的权限

  1. CREATE USER 'zhangsan'@'localhost'IDENTIFIED BY '1q@w3e4R';
  2. GRANT ALL ON *.* TO 'zhangsan'@'localhost' WITH GRANT OPTION;

创建 lisi 用户,abc.com域登录,密码 1q@w3e4R,授予所有权限以及授权权限的权限

  1. CREATE USER 'lisi'@'%.abc.com' IDENTIFIED BY '1q@w3e4R';
  2. GRANT ALL ON *.* TO 'lisi'@'%.abc.com' WITH GRANT OPTION;

本地登录测试

image.png

创建用户授予某库的所有权限

创建2个数据库 mydb01, mydb02

  1. create database mydb01;
  2. create database mydb02;

创建 wangwu 用户,本地登录,密码1q@w3e4R,授予mydb01 数据库所有权限

  1. CREATE USER 'wangwu'@'localhost' IDENTIFIED BY '1q@w3e4R';
  2. GRANT ALL ON mydb01.* TO 'wangwu'@'localhost';

本地登录测试

image.png

创建用户授予某库中的所有表部分权限

在上一步我们已经创建过 wangwu 这个用户, 这次我们要给 wangwu 用户添加权限
添加对 mydb02 库所有表有 “创建”、“插入”、“查询”,无“修改”、“删除”权限

授予权限
  1. GRANT SELECT,INSERT,CREATE ON mydb02.* TO 'wangwu'@'localhost';

测试

image.png

权限查看

查看所有用户

  1. SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

image.png

查看某个用户的所有权限

  1. show grants for 'wangwu'@'localhost';

image.png

移除权限

移除所有权限

移除 lisi 用户,abc.com 域上登录的所有权限(对所有库,所有表,所有权限)

  1. REVOKE ALL ON *.* FROM 'lisi'@'%.abc.com';

移除对某数据库中的表创建和删除权限

移除 wangwu 用户,本地登录,对 mydb01 数据库 create drop 权限。

  1. show grants for 'wangwu'@'localhost';

image.png

移除某用户对某表的具体权限
  1. REVOKE INSERT,UPDATE,DELETE ON customer.addresses FROM 'custom'@'%.example.com';

删除用户

我们不需要某些用户连接上 mysql ,可以将该用户删除
例如:删除 wangwu 用户

  1. DROP USER 'wangwu'@'localhost';

授权远程用户

创建用户,让其能在任意机器上连接 mysql,赋予该用户最大权限

  1. CREATE USER 'lcy'@'%'IDENTIFIED BY '1q@w3e4R';
  2. GRANT ALL ON *.* TO 'lcy'@'%' WITH GRANT OPTION;

如果只是希望从某个 IP地址连上MySQL,则只需要把 % 改成ip地址即可

效果:
image.png