详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

简介

1、用户管理
2、授权控制
3、日志管理
4、解决数据乱码问题

实验环境

  • 系统环境:centos7.4
  • 宿主机IP地址:192.168.100.71
  • yum挂载目录:/mnt/sr0

命令步骤

一、用户管理

[root@redhat7_1 ~]# mysql -uroot -p123 #登陆Mysql

1、新建用户

mysql> create user 't01'@'localhost' identified by '123';

#创建"t01"用户,赋予密码为"123",并且只允许在本机登陆

t01:#创建的用户名称

@:#代表分隔符

localhost:#代表允许在哪台主机登陆,值可为网段,也可为"%"代表任意主机
identified by:#设置的密码

2、查看新建用户位置

mysql> show databases; #查看数据库
mysql> use mysql; #进入mysql数据库
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

3、重命名用户

mysql> rename user 't01'@'localhost' to 'u01'@'192.168.100.0/24';#将"t01"用户修改为"u01",并且将允许登陆的主机"localhost"主机改为"192.168.100.0/24"网段
mysql> select user,host,authentication_string from mysql.user; #查看user表
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

4、删除用户

mysql> drop user 'u01'@'192.168.100.0/24'; #删除"u01"用户
mysql> select user,host,authentication_string from mysql.user #再次查看user表
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

5、设置加密密码

mysql> select password('123');
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

mysql> create user 'luxiaofeng'@'localhost' identified by *'23AE809DDACAF96AF0FD78ED04B6A265E05AA257'**; #重新创建用户,将密码复制添加进去

mysql> select user,host,authentication_string from mysql.user
mysql> select user,host,authentication_string from user;
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

6、修改密码

mysql> set password for 'luxiaofeng'@'localhost' =password('123321');#修改密码为"123321"
mysql> update mysql.user set authentication_string='777777' where user='luxiaofeng'; #密码修改为"777777"

二、授权管理

权限列表

权限 权限级别 权限说明
CREATE 数据库、表或索引 创建数据库、表或索引权限
DROP 数据库或表 删除数据库或表权限
GRANT OPTION 数据库、表或保存的程序 赋予权限选项
REFERENCES 数据库或表
ALTER 更改表,比如添加字段、索引等
DELETE 删除数据权限
INDEX 索引权限
INSERT 插入权限
SELECT 查询权限
UPDATE 更新权限
CREATE VIEW 视图 创建视图权限
SHOW VIEW 视图 查看视图权限
ALTER ROUTINE 存储过程 更改存储过程权限
CREATE ROUTINE 存储过程 创建存储过程权限
EXECUTE 存储过程 执行存储过程权限
FILE 服务器主机上的文件访问 文件访问权限
CREATE TEMPORARY TABLES 服务器管理 创建临时表权限
LOCK TABLES 服务器管理 锁表权限
CREATE USER 服务器管理 创建用户权限
PROCESS 服务器管理 查看进程权限
RELOAD 服务器管理 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限
REPLICATION CLIENT 服务器管理 复制权限
REPLICATION SLAVE 服务器管理 复制权限
SHOW DATABASES 服务器管理 查看数据库权限
SHUTDOWN 服务器管理 关闭数据库权限
SUPER 服务器管理 执行kill线程权限

1、赋予权限

mysql> grant all on . to 'luxiaofeng'@'localhost' identified by '123';

解析:

all:所有权限

*:第一个"*"代表对应的数据库

*:第二个"*"代表对应的数据表

luxiaofeng:赋予权限的用户

@:分隔符

localhost:允许在哪台主机上登陆

identified by:设置密码

[root@redhat7_1 ~]# mysql -u luxiaofeng -p123
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

2、查看权限

mysql> show grants for 'luxiaofeng'@'localhost';
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

3、撤销权限

[root@redhat7_1 ~]# mysql -uroot -p123 #使用"root"身份进行登陆
mysql> revoke all on . from 'luxiaofeng'@'localhost'; #撤销"luxiaofeng"用户的所有权限
mysql> show grants for 'luxiaofeng'@'localhost';
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

三、日志管理

1、错误日志

包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何错误时的相关信息

[root@redhat7_1 ~]# cd /usr/local/mysql/data/
[root@redhat7_1 ~]# ls
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

[root@redhat7_1 ~]# vim /etc/my.cnf #修改主配置文件

在[mysqld]选项中添以下参数:

log-error=/usr/local/mysql/data/mysql_error.log #指定日志路径

[root@redhat7_1 data]# systemctl restart mysqld.service #重启服务
[root@redhat7_1 data]# ls
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

2、通用查询日志

MySQL所有连接以及语句被记录到的日志文件。注意这种日志就是用来记录在MySQL上执行过的SQL语句,包括DDL和DML以及特殊命令如SET,而不仅仅是select语句。

[root@redhat7_1 ~]# vim /etc/my.cnf

在[mysqld]选项中添以下参数:

general_log=ON #开启通用查询日志
general_log_file=/usr/local/mysql/data/mysql_general.log #指定日志路径

[root@redhat7_1 ~]# systemctl restart mysqld.service

[root@redhat7_1 ~]# ls /usr/local/mysql/data/
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

3、二进制日志

包含了所有更新了数据或者已经潜在更新了数据的所有语句,记录了数据的更改,其主要目的是在恢复数据时能够最大可能地恢复数据库。

[root@redhat7_1 ~]# vim /etc/my.cnf

在[mysqld]选项中添以下参数:

log_bin=mysql-bin #开启二进制日志功能

[root@redhat7_1 ~]# systemctl restart mysqld.service
[root@redhat7_1 ~]# ls /usr/local/mysql/data/
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

mysql> create table student(id int not null primary key auto_increment,name varchar(10),score decimal(5,2)); #新建一张"student"表
mysql> insert into student(name,score) values('zhangsan',90); #添加数据
mysql> insert into student(name,score) values('lisi',95);
mysql> insert into student(name,score) values('wangwu',96);
mysql> quit;

[root@redhat7_1 ~]# cd /usr/local/mysql/data/ #日志目录下
[root@redhat7_1 data]# mysqlbinlog --no-defaults mysql-bin.000002 #查看二进制文件
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

4、慢速查询日志

记录所有执行事件超过long_query_time秒的SQL语句。long_query_time:超时可用于找到执行时间长的查询,以用于优化。

[root@redhat7_1 ~]# vim /etc/my.cnf

在[mysqld]选项中添以下参数:

slow_query_log=ON #开启慢速查询日志
slow_query_log_file=/usr/local/mysql/data/mysql_slow.log #指定日志路径
long_query_time=5 #设置超时时间,单位秒,超出设定时间,记为慢

[root@redhat7_1 ~]# systemctl restart mysqld.service

[root@redhat7_1 ~]# ls /usr/local/mysql/data/
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

[root@redhat7_1 ~]# mysql -u root -p123 #登陆mysql
mysql> select sleep(6);
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

[root@redhat7_1 ~]# cat /usr/local/mysql/data/mysql_slow.log
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

四、解决数据乱码问题

法一:修改配置文件法

[root@redhat7_1 ~]# vim /etc/my.cnf

在[client]、[mysqld]中添加相应字符集:

[client]

defaults-character-set=utf8

[msyqld]

character_set_server=utf8

法二:创建库、表指定字符集

[root@redhat7_1 ~]# mysql -u root -p123
mysql> create database auth default character set utf8 collate utf8_general_ci; #创建库
mysql> use auth;
mysql> create table users(user_name CHAR(16) NOT NULL,user_passwd CHAR(48) DEFAULT '',PRIMARY KEY(user_name))ENGINE=InnoDB DEFAULT CHARSET=utf8; #创建表
mysql> desc users;
详解Mysql-5.7用户管理、授权控制、日志管理以及解决数据库乱码问题

猜你喜欢

转载自blog.51cto.com/11905606/2166414