CentOS 6 安装 MySQL 8.0.+

一、Linux下MySQL安装(YUM)

1、检查并删除已经安装的MySql

  • 检查MariaDB
shell> rpm -qa|grep mariadb
mariadb-server-5.5.60-1.el7_5.x86_64
mariadb-5.5.60-1.el7_5.x86_64
mariadb-libs-5.5.60-1.el7_5.x86_64

  • 删除mariadb

  如果不存在(上面检查结果返回空)则跳过步骤

shell> rpm -e --nodeps mariadb-server
shell> rpm -e --nodeps mariadb
shell> rpm -e --nodeps mariadb-libs

  其实yum方式安装是可以不用删除mariadb的,安装MySQL会覆盖掉之前已存在的mariadb

  • 检查MySQL
shell> rpm -qa|grep mysql
  • 删除MySQL

  如果不存在(上面检查结果返回空)则跳过步骤

shell> rpm -e --nodeps xxx

   或

rpm -e --nodeps `rpm -qa | grep mysql`

2、添加MySQL Yum Repository

从CentOS 7开始,MariaDB成为Yum源中默认的数据库安装包。
也就是说在CentOS 7及以上的系统中使用yum安装MySQL默认安装的会是MariaDB(MySQL的一个分支)。
如果想安装官方MySQL版本,需要使用MySQL提供的Yum源。

  • 下载MySQL源

  官网地址:https://dev.mysql.com/downloads/repo/yum/

  • 查看系统版本:
lsb_release -a   查看系统版本
getconf LONG_BIT 查看系统位数

查看系统版本
cat /etc/redhat-release
  • 选择对应的版本进行下载
wget https://repo.mysql.com//mysql80-community-release-el6-3.noarch.rpm
  • 安装MySQL源
rpm -ivh  mysql80-community-release-el6-3.noarch.rpm
  • 检查是否安装成功

  执行成功后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repomysql-community-source.repo

  并且通过yum repolist可以看到mysql相关资源

shell> yum repolist enabled | grep "mysql.*-community.*"
!mysql-connectors-community/x86_64 MySQL Connectors Community                108
!mysql-tools-community/x86_64      MySQL Tools Community                      90
!mysql80-community/x86_64          MySQL 8.0 Community Server                113

3、选择MySQL版本

使用MySQL Yum Repository安装MySQL,
默认会选择当前最新的稳定版本,例如通过上面的MySQL源进行安装的话,默安装会选择MySQL 8.0版本,
如果就是想要安装该版本,可以直接跳过此步骤,
如果不是,比如我这里希望安装MySQL5.7版本,就需要“切换一下版本”:

  • 查看当前MySQL Yum Repository中所有MySQL版本(每个版本在不同的子仓库中)
shell> yum repolist all | grep mysql
  • 切换版本
shell> sudo yum-config-manager --disable mysql80-community
shell> sudo yum-config-manager --enable mysql57-community

  除了使用yum-config-manager之外,还可以直接编辑/etc/yum.repos.d/mysql-community.repo文件

  enabled=0禁用

[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

  enabled=1启用

# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
  • 检查当前启用的MySQL仓库
shell> yum repolist enabled | grep mysql

  如果同时启用了多个仓库,安装时会选择最新版本

4、安装MySQL

shell> sudo yum install mysql-community-server

  该命令会安装MySQL服务器 (mysql-community-server) 及其所需的依赖、相关组件,包括mysql-community-client、mysql-community-common、mysql-community-libs等

  如果带宽不够,这个步骤时间会比较长,请耐心等待~

  或

yum install mysql-server

5、查询是否安装成功

mysqladmin -V

6、启动MySQL

  启动前最好修改/etc/my.cnf配置文件

vi /etc/my.cnf

 添加:

# leeze
port = 3306
character-set-server=utf8
#忘记密码时使用
#skip-grant-tables
#设置协议认证方式
default_authentication_plugin=mysql_native_password

shell> sudo service mysqld start
  • 其他命令:
service mysqld status
service mysqld stop
service mysqld restart

7、修改密码

  • 初始密码

  MySQL第一次启动后会创建超级管理员账号root@localhost,初始密码存储在日志文件中:

shell> sudo grep 'temporary password' /var/log/mysqld.log
  • 修改默认密码
shell> mysql -uroot -p
  • 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Cn@12345678';

  这里会遇到一个问题,mysql默认的密码规则必须包含特殊字符、大写字母、小写字母、数字、一定长度
  并且对密码要求严格,至少8位,包含大小写等,

  密码策略的所有参数

SHOW VARIABLES LIKE 'validate_password%';
show variables like '%validate_password.policy%';
show variables like '%validate_password.length%';

  若想设置成123456,则要以下两条命令:

set global validate_password.policy=0;  #设置为弱口令
set global validate_password.length=1;  #密码最小长度为1

alter user user() identified by '123456';

8、允许root远程访问

#任何主机
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
#指定主机
mysql>GRANT ALL PRIVILEGES ON *.* TO 'xxxx'@’xx.xx.xx.xx’ IDENTIFIED BY 'xxxx' WITH GRANT OPTION;
# 然后刷新权限
mysql>flush privileges;
  • 首先查看用户表
select user,host,plugin from user;

  发现登录主机是localhost,当然不能登录,把root用户的localhost设置为%,这样任意主机都可以连接。

  修改连接权限(%表示所有ip,如果只指定某台电脑,则改成相应的ip)

update user set host='%' where user ='root';
  • 更改加密方式
update user set plugin='mysql_native_password' where user ='root';
  • 授权远程连接
grant all privileges on *.* to root@'%'
  • 执行刷新权限
FLUSH PRIVILEGES;