Centos 安装mysql8

1.移除mariadb
# 查询是否安装mariadb
# RedHat Package Manger(RedHat软件管理工具)
# -qa query all
# grep (global search rgular expression(RE) and print out the line) 文本搜索
rpm -qa|grep mariadb

# 移除mariadb
yum remove mariadb

# 查看mysql的配置类文件信息
ls /etc/my.cnf
ll /var/lib/mysql/

# 移除mysql 配置信息
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql/

# 查看是否有mysql 服务
systemctl service mysql
2.处理centos 系统信息
# 查看centos 版本
cat /etc/redhat-release
3.处理之前版本的mysql
# 查看mysql 安装信息
rpm -qa | grep -i mysql

# 移除mysql
yum -y remove MySQL-*

# 查询和mysql 相关的信息
find / -name mysql

# 移除对应的文件 rm -rf 路径的方式
# 一行行复制吧
4.安装mysql
# 升级Mysql软件包--Update
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

#安装mysql
sudo yum --enablerepo=mysql80-community install mysql-community-server

# 启动mysql 服务
sudo service mysqld start

# 查看mysql 状态
service mysqld status
5.配置mysql
# 查看mysql 临时密码
grep "A temporary password" /var/log/mysqld.log

# 复制mysql 临时密码 (CfzwMs;iP1od)
# 登陆mysql
mysql -uroot -p

# 输入临时密码

# 修改root 密码
# 出现 You must reset your password using ALTER USER statement before executing this statement. 错误时先初始化密码.
alter user user() identified by "Aa123456@";

# 查询密码策略
use mysql;
select user,plugin from user where user='root';

# 密码策略为 caching_sha2_password

# 查询用户及host信息
select user,host from user;

# 修改用户及密码
alter user 'root'@'localhost' identified with mysql_native_password by 'Aa123456@';

# 查看mysql 用户的加密方式
select user,plugin from user where user='root';

# 查找my.cnf 文件添加

find / -name my.cnf

# 编辑my.cnf 文件,添加下面文字 
default_authentication_plugin=mysql_native_password

# 保存后重启mysql 服务
service mysql.server restart


# 登陆mysql use mysql;
# 添加一个用户
CREATE USER 'root'@'%' IDENTIFIED BY 'Aa123456@';

# 给用户赋权限
GRANT ALL ON *.* TO 'root'@'%';

# 设置密码永不过期
ALTER USER 'root'@'%' IDENTIFIED BY 'Aa123456@' PASSWORD EXPIRE NEVER;  

# 设置密码的加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Aa123456@';

# 刷新权限
FLUSH PRIVILEGES;

# 退出mysql
# 编辑my.cnf文件
# 添加以下字段

vi /etc/my.cnf
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

5.1Mysql初始化密码错误
# 初始化密码错误时,在/etc/my.cnf 中增加 skip-grant-tables。此时登录不需要密码,进入后使用
FLUSH PRIVILEGES;
# 然后可以针对数据库进行修改
6.处理mysql端口
# 添加防火墙端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

# 重启防火墙
systemctl restart firewalld.service
7.mysql 常用命令
# 开启mysql
service mysqld start
# 关闭服务
service mysqld stop
# 重启服务
service mysqld restart
# 查看状态
service mysqld status
8.查看已经开启的服务
systemctl list-unit-files|grep enabled
9.服务器优化处理
# 编辑 /etc/my.cnf 文件,修改
[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8mb4
#允许最大连接数
max_connections=200
#允许连接失败的次数,这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10

# innodb 优化
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 缓存池
innodb_buffer_pool_size=8G
# 脏页占innodb_buffer_pool_size的比例时,触发刷脏页到磁盘
# 25%~50%
innodb_max_dirty_pages_pct=30
# 限制Innodb能打开的表的数据,如果库里的表特别多的情况,请增加这个。这个值默认是300
innodb_open_files = 500
# 此参数确定写日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据。MySQL开发人员建议设置为1-8M之间
innodb_log_buffer_size = 2M

#开启记录慢查询 设置慢查询界定时间为1秒
long_query_time=1
slow-query-log=On
slow_query_log_file="mysql_slow_query.log"

transaction_isolation = READ-COMMITTED
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
# lower_case_table_names = 1 这个不能要

#skip-grant-tables
[mysql]
default-character-set=utf8mb4