简介
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数据库
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表
4、删除用户
mysql> drop user 'u01'@'192.168.100.0/24'; #删除"u01"用户
mysql> select user,host,authentication_string from mysql.user #再次查看user表
5、设置加密密码
mysql> select password('123');
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;
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
2、查看权限
mysql> show grants for 'luxiaofeng'@'localhost';
3、撤销权限
[root@redhat7_1 ~]# mysql -uroot -p123 #使用"root"身份进行登陆
mysql> revoke all on . from 'luxiaofeng'@'localhost'; #撤销"luxiaofeng"用户的所有权限
mysql> show grants for 'luxiaofeng'@'localhost';
三、日志管理
1、错误日志
包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何错误时的相关信息
[root@redhat7_1 ~]# cd /usr/local/mysql/data/
[root@redhat7_1 ~]# ls
[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
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/
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> 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 #查看二进制文件
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/
[root@redhat7_1 ~]# mysql -u root -p123 #登陆mysql
mysql> select sleep(6);
[root@redhat7_1 ~]# cat /usr/local/mysql/data/mysql_slow.log
四、解决数据乱码问题
法一:修改配置文件法
[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;