Centos 7 MYSQL5.7 安装与卸载

一、卸载已安装的MySql

1.1 rpm查看安装

rpm -qa | grep -i mysql

1.2 rpm 卸载

清除上述查找出来的MySQL

rpm -e mysql57-community-release-el7-9.noarch
rpm -e mysql-community-server-5.7.17-1.el7.x86_64
rpm -e mysql-community-libs-5.7.17-1.el7.x86_64
rpm -e mysql-community-libs-compat-5.7.17-1.el7.x86_64
rpm -e mysql-community-common-5.7.17-1.el7.x86_64
rpm -e mysql-community-client-5.7.17-1.el7.x86_64
cd /var/lib/  
rm -rf mysql/

1.3 清除余项

删除mysql的所有配置
rm –rf /usr/my.cnf
rm -rf /root/.mysql_sercret
 
剩余配置检查
chkconfig --list | grep -i mysql
chkconfig --del mysqld
根据上面的列表,删除 ,如:mysqld

二、安装MySql

2.1 下载yum源

现在centos上默认是没有yum源的,yum安装的是 MariaDB,所以我们需要自己先配置yum源。 

wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'

2.2 安装yum源

rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

  

mc homebrew卸载mysql 卸载mysql5.7_慢查询

2.3 安装MySql

yum install -y mysql-community-server

  

mc homebrew卸载mysql 卸载mysql5.7_mc homebrew卸载mysql_02

2.4 启动mysql

mysql 基础配置说明(vim /etc/my.cnf)

character-set-server=utf8

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# 设置时区为东八区
default-time_zone = +8:00
# 密码策略
validate_password_policy=0
validate_password_length=1

# 不区分大小写
lower_case_table_names=1

# 慢查询
slow_query_log=on
long_query_time=3
slow_query_log_file=/var/lib/mysql/VM_0_12_centos-slow.log
log_queries_not_using_indexes=on

# 缓存
query_cache_type=on
query_cache_size=102400

在centos7中,没有了service命令,都是使用systemctl命令。

systemctl start mysqld

查看状态

systemctl status mysqld

2.5 登录数据库,修改数据库密码

mysql5.7的新特性之一就是在初始化的时候会生成一个自定义的密码,然后你需要找到这个密码,登录的时候输入。注意,输入密码的时候是不显示。

倘若没有/var/log/mysqld.log,可以先删除原来安装过的mysql残留的数据
rm -rf /var/lib/mysql
再启动mysql
systemctl start mysqld #启动MySQL

找到密码: 红框的地方就是密码:

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

  

mc homebrew卸载mysql 卸载mysql5.7_mc homebrew卸载mysql_03

登录数据库:这里-p之后不用输入密码,回车后再输入。改过密码之后登录则是直接在-p后加密码了。

注意,修改的密码太简单会不给修改,把大小写字母和数字加上就肯定可以了。如果不想设置那么复杂密码,可以修改规则:

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

修改密码:

SET PASSWORD = PASSWORD('123456');

设置远程可以登录(建议root不要授权远程访问,请创建新mysql用户)

现在这样是无法在本地用工具登录访问的,现在要做两件事,一件事是将云服务器上的3306端口开放;另一件事是配置远程可以访问。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;

先设置刚才的密码可以远程登录,然后使用flush命令使配置立即生效,如果还不行可以尝试重启一下数据库。

其他方案:

#vim /etc/my.cnf(注:windows下修改的是my.ini)

在文档内搜索mysqld定位到[mysqld]文本段,在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程(修改完成后将此行注释掉)。

mysql5.7: update user set password=password('123456') where user='root' and host='localhost';

mysql8: update mysql.user set authentication_string='123456' where user='root';


数据库8.0已经没有password这个字段, password字段改成了authentication_string, 所以需要将password改成authentication_string。

2.6 修改一些简单的配置

yum安装的MySql配置文件默认在/etc文件夹下:

vim /etc/my.cnf

在[mysqld]下面添加,不需要分号
字符集:注意是utf8而不是utf-8!

character-set-server=utf8

这时候使用show variables like 'char%';就可以查看到字符集都是utf8了
sql支持group by语句

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

设置时区为东八区

default-time_zone = '+8:00'

最后重启数据库,使配置生效。

systemctl restart mysqld

其他配置

# 不区分大小写
lower_case_table_names=1

#慢查询
slow_query_log=on
long_query_time=3
slow_query_log_file=/var/lib/mysql/VM_0_12_centos-slow.log
log_queries_not_using_indexes=on

# 缓存
query_cache_type=on
query_cache_size=102400

慢查询基本配置

  1. slow_query_log 启动停止技术慢查询日志
  2. slow_query_log_file 指定慢查询日志得存储路径及文件(默认和数据文件放一起)
  3. long_query_time 指定记录慢查询日志SQL执行时间得伐值(单位:秒,默认10秒)
  4. log_queries_not_using_indexes  是否记录未使用索引的SQL
  5. log_output 日志存放的地方【TABLE】【FILE】【FILE,TABLE】

慢查询分析

        慢查询的日志记录非常多,要从里面找寻一条查询慢的日志并不是很容易的事情,一般来说都需要一些工具辅助才能快速定位到需要优化的SQL语句,下面介绍两个慢查询辅助工具

Mysqldumpslow(pt_query_digest)

常用的慢查询日志分析工具,汇总除查询条件外其他完全相同的SQL,并将分析结果按照参数中所指定的顺序输出。

语法:

mysqldumpslow -s r -t 10 slow-mysql.log

-s order (c,t,l,r,at,al,ar)

         c:总次数

         t:总时间

         l:锁的时间

         r:总数据行

         at,al,ar  :t,l,r平均数  【例如:at = 总时间/总次数】

  -t  top   指定取前面几天作为结果输出

mysqldumpslow -s r -t 10 /var/lib/mysql/VM_0_12_centos-slow.log

 

用户权限

创建一个普通用户并授权
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
授权: grant all on *.* to oyc@'%' identified by '123456';

上面,all表示所有的权限(如读、写、查询、删除等操作);
.有两个*,前面的*表示所有的数据库,后面的*表示所有的表;

identified by后面跟密码,用单引号括起来,这里user1指的是localhost上的user1。
给网络上其他机器上的某用户授权:
grant all on oyc1.* to 'oyc1'@'192.168.33.128' identified by '111222';
上面,用户和主机的IP都用单引号括起来,两者之间有@符号,IP可以用%代替,表示所有主机。

查看 MySQL 用户权限

    查看当前用户(自己)权限:
    show grants;
    查看其他 MySQL 用户权限:
    show grants for oyc@localhost;

撤销已经赋予给 MySQL 用户权限的权限。

revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:
grant all ON oyc1.* to 'oyc1'@'%';
revoke all on oyc1.* from 'oyc1'@'%';

Mysql安装位置

//(show variables  like "character_sets_dir%")

character_sets_dir :  /usr/share/mysql/charsets/

2.7 设置开机启动

systemctl enable mysqld
systemctl daemon-reload