https://www.cnblogs.com/opsprobe/p/12006492.html
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

检查是否安装有MySQL数据库

rpm -qa | grep mysql
有的话,用 rpm -e 命令 或者 rpm -e —nodeps 命令卸载掉
注意:MySQL相关的安装也一并卸载干净,如:系统自带的 mysql-libs-5.1.73-8.el6_8.x86_64 都有卸载掉
rpm -e mysql # 普通删除模式
rpm -e —nodeps mysql # 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

在删除完以后再通过 rpm -qa | grep mysql 命令来查看MySQL是否已经卸载干净!

下载MySQL官网的 yum repository

wget -c http://dev.mysql.com/get/mysql57-community-release-el6-10.noarch.rpm

本地安装下载下来的rpm包

yum localinstall mysql57-community-release-el6-10.noarch.rpm

查看可用的安装包

检查机子自带的mysql:yum list installed|grep mysql


yum repolist enabled |grep mysql
安装前装gcc所有包,防止报错
yum install gcc*

安装mysql

yum install -y mysql-community-server
安装成功.

启动mysql

service mysqld start
查看状态:
service mysqld status
加入开机启动:
chkconfig mysqld on

配置数据库

在 /etc/my.cnf 配置文件,写入以下配置:
vim /etc/my.cnf
# MySQL5.7默认对用户密码有密码强度要求,必须包含数字、小写字母、大写字母 、特殊字符,长度至少8位(关于MySQL5.7密码策略及修改技巧,可以参考这篇文章:https://www.jianshu.com/p/5779aa264840
# 禁用密码策略(为了学习时操作方便,这里选择禁用默认密码强度策略)
validate_password = off
# validate_password_policy = 0
# 修改字符编码为utf8
character_set_server = utf8
init_connect = ‘SET NAMES utf8’
# 数据库是否区分大小写,0:区分大小写,1:不区分大小写
lower_case_table_names=1

utf-8 CentOS7下让MySQL支持中文

/etc/my.cnf
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8general_ci
修改完成后,_service mysql restart
重启mysql服务就生效。注意:在较新版的mysq中,[mysqld]字段与[mysql]字段是有区别的

使用SHOW VARIABLES LIKE ‘character%’;查看,发现数据库编码全已改成utf8。

Centos 6.10 install mysql5.7 - 图1

4、如果上面的都修改了还乱码,那剩下问题就一定在connection连接层上。解决方法是在发送查询前执行一下下面这句(直接写在SQL文件的最前面):
SET NAMES ‘utf8’;
5、使用showcreate database数据库名;查看指定数据库的编码方式,如下:

Centos 6.10 install mysql5.7 - 图2

修改指定数据库的编码:
mysql>user mydb;
mysql>alter database mydb character set utf8;
使用show create table表名;查看表的编码格式。如下:

Centos 6.10 install mysql5.7 - 图3

设置默认编码为utf8:
set names utf8;
设置数据库db_name默认为utf8:
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
设置表tb_name默认编码为utf8:
ALTER TABLE tb_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
修改字段用utf8


alter table 表名 modify 表字段名 varchar(50) CHARACTER SET utf8;
alter table tablename modify table_field_name varchar(32) CHARACTER SET utf8;

https://www.5ibc.net/centos/4142.html
保存退出!
重启数据库,让配置文件生效
service mysqld restart

查看初始密码:
grep ‘temporary password’ /var/log/mysqld.log
进入数据库,输入刚查到的初始密码,如下图所示:
mysql -u root -p
修改root账号的密码为123456
alter user ‘root’@’localhost’ identified by ‘123456’;
刷新权限
flush privileges;

service mysqld status mysqld dead but subsys locked

可能出现的错误:MySQL is unable to start.使用service…status命令检查服务状态会得出下面错误:
Debian/Ubuntu:
service mysqld status mysqld dead but subsys locked
CentOS/RHEL:
service mariadb status ERROR! MariaDB is not running, but lock file (/var/lock/subsys/mysql) exists
引起这个错误的原因:

1./var/lock/subsys/mysqld 文件已存在

ls /var/lock/subsys/mysqld /var/lock/subsys/mysqld
2.服务器内存不够了

解决方法

1.删除文件/var/lock/subsys/mysqld

rm -f /var/lock/subsys/mysqld

2.使用free -m命令检查服务器当前内存开销情况,如果闲置内存超过200M就跳过此步

停止的服务根据实际情况来,如果你用的是apache则停止httpd,如果是nginx+php-fpm则停止相应的服务即可。
service httpd stop service nginx stop service php-fpm stop

3.启动MySQL/MariaDB服务

Debian/Ubuntu:
service mysqld start
CentOS/RHEL:
service mariadb start

4.最后启动web相关服务

同步骤2,启动对应所需要的服务即可。
service httpd start service nginx start service php-fpm start
https://towait.com/blog/mysqld-dead-but-subsys-locked/


ERROR 1146 (42S02): Table ‘performance_schema.session_variables’ doesn’t exist

mysql_upgrade -uroot -p —force
# mysql_upgrade -uroot -p —force —skip-version-check

Mysql Native table ‘performance_schema’.’session_variables’ has the wrong structure

set @@global.show_compatibility_56=ON;