CentOS7.x安装MySQL8.0.11二进制版本


社区版下载地址

采用二进制方式免编译安装MySQL,适合各类MySQL产品系列,不需要复杂的编译设置和编译时间等待,直接解压下载的软件包,初始化即可完成MySQL的安装和启动.

1、准备工作

  • 依赖环境

    1. 关闭防火墙
      systemctl stop firewalld.service

    2. MySQL依赖于libaio
      yum search libaio
      yum install libaio

  • 下载,解压,重命名

    个人喜好将所有下载的软件放至目录 /data/soft/
    个人喜好将所有软件安装在目录:/data/important-software/
    以上软件和安装目录各新建目录mysql;/data/soft/mysql /data/important-software/mysql/
    再到目录/data/important-software/mysql/ 分别新建MySQL的主程序目录和数据目录
    主程序目录:/data/important-software/mysql/mysql-base/
    数据目录:/data/important-software/mysql/mysql-data
    配置文件目录:/data/important-software/mysql/mysql-base/etc/
    PID目录: /data/important-software/mysql/mysql-data/pid

    下载:

    1. cd /data/soft/
    2. wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar
    3. tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar
    4. tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
    5. cp -r /data/soft/mysql/mysql-8.0.11-linux-glibc2.12-x86_64/* /data/important-software/mysql/mysql-base/

    解压目录内容
    bin mysqld服务器,客户端和实用程序
    data 日志文件,数据库
    docs MySQL手册信息格式
    man Unix手册页
    include 包含(标题)文件
    lib
    share 其他支持文件,包括错误消息,示例配置文件,用于数据库安装的SQL

2. 安装MySQL

  • 新建用户组和用户

    1. cd /data/important-software/mysql/mysql-base/
    2. groupadd mysql
    3. useradd -r -g mysql -s /bin/false mysql
  • 初始化MySQL

    在初始化之前,必须将新的my.cnf配置完成,以及将系统自动重启文件进行修改。

    • 配置文件
    1. 删除etc下的my.cnf rm /etc/my.cnf
    2. 将准备好的配置文件(下文最下方)放至目录 /data/important-software/mysql/mysql-base/etc/
    3. 将配置文件进行软链接到目录/etc下;ln -s /data/important-software/mysql/mysql-base/etc/my.cnf /etc/my.cnf
    • 自启动文件
    1. 复制自启动文件到系统init.d目录:cp /data/important-software/mysql/mysql-base/support-files/mysql.server /etc/init.d/mysql.server

    将原来的:

basedir=
datadir=
```
    修改为:
```
basedir=/data/important-software/mysql/mysql-base
datadir=/data/important-software/mysql/mysql-data    
```
    3. 将原来的:
    ```
mysqld_pid_file_path=
if test -z "$basedir"
then
  basedir=/usr/local/mysql
  bindir=/usr/local/mysql/bin
  if test -z "$datadir"
  then
    datadir=/usr/local/mysql/data
  fi
  sbindir=/usr/local/mysql/bin
  libexecdir=/usr/local/mysql/bin
else
  bindir="$basedir/bin"
  if test -z "$datadir"
  then
    datadir="$basedir/data"
  fi
  sbindir="$basedir/sbin"
  libexecdir="$basedir/libexec"
fi
    ```
    修改为:

    ```
mysqld_pid_file_path=
if test -z "$basedir"
then
  basedir=/data/important-software/mysql/mysql-base
  bindir=/data/important-software/mysql/mysql-base/bin
  if test -z "$datadir"
  then
    datadir=/data/important-software/mysql/mysql-data
  fi
  sbindir=/data/important-software/mysql/mysql-base/bin
  libexecdir=/data/important-software/mysql/mysql-base/bin
else
  bindir="$basedir/bin"
  if test -z "$datadir"
  then
    datadir="$basedir/data"
  fi
  sbindir="$basedir/sbin"
  libexecdir="$basedir/libexec"
fi
    ```

    3. 初始化MySQL
    `/data/important-software/mysql/mysql-base/bin/mysqld --initialize --user=mysql --basedir=/data/important-software/mysql/mysql-base --datadir=/data/important-software/mysql/mysql-data`

***注意密码***
    
    4. mysql临时密码
    
    > [注意]root@localhost生成临时密码:`;b;s;)/rn6A3`,也就是`root@localhost:`后的字符串
    > 示例
```
2017-08-26T03:23:35.368366Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-08-26T03:23:35.748679Z 0 [Warning] InnoDB: New log files created, LSN=45790
2017-08-26T03:23:35.793190Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2017-08-26T03:23:35.848286Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: f210c54b-8a0d-11e7-abbd-000c29129bb0.
2017-08-26T03:23:35.848889Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2017-08-26T03:23:35.849421Z 1 [Note] A temporary password is generated for root@localhost: ;b;s;)/rn6A3
```

    5. 生成RSA私钥,可以跳过此步骤
    mysql_ssl_rsa_setup需要openssl支持,用于启用数据量ssl连接,需要进一步配置。
    ![**参考MySQL使用SSL连接**](https://segmentfault.com/a/1190000007819751)
    
    `/data/important-software/mysql/mysql-base/bin/mysql_ssl_rsa_setup`

    6. 对之前创建的MySQL主程序目录和数据目录授权

    1. `chown -Rf mysql.mysql /data/important-software/mysql`
    2. `chmod 750 /data/important-software/mysql`
    
## 3. 启动MySQL服务
    **启动脚本有两个分别是:**
    `/data/important-software/mysql/mysql-base/bin/mysqld_safe`
    `/etc/init.d/mysqld`
    1. 启动方式一
    `/data/important-software/mysql/mysql-base/bin/mysqld_safe --user=mysql &`
    
    2. 启动方式二
    `service mysql.server start` 或者 `/etc/init.d/mysqld start`

## 设置MySQL密码

    登陆成功后,设置MySQL密码
    `ALTER USER 'root'@'localhost' identified by '输入的密码;` 或 `set password=password("输入的密码");`
    刷新权限
    `flush privileges;`

    在MySQL安装目录的 bin 目录下执行命令:

    mysql -u root -p
      这时候会提示输入密码,记住了上面第1.3步安装时的密码,填入即可登录成功,进入MySQL命令模式。

    在MySQL8.0.4以前,执行

    `SET PASSWORD=PASSWORD('[修改的密码]');` 就可以更改密码,
    ***但是MySQL8.0.4开始,这样默认是不行的。因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。***
  因为当前有很多数据库工具和链接包都不支持“caching_sha2_password”,为了方便,我暂时还是改回了“mysql_native_password”认证插件。
    修改用户密码,在MySQL中执行命令:
    `ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';`
    修改密码验证插件,同时修改密码。
  如果想默认使用“mysql_native_password”插件认证,可以在配置文件中配置default_authentication_plugin项。[下面的my.cnf已修改好了]

    [mysqld]
    default_authentication_plugin=mysql_native_password
    
## mysql8创建远程连接账户

mysql8和原来的版本有点不一样,8的安全级别更高,所以在创建远程连接用户的时候,

不能用原来的命令(同时创建用户和赋权):

mysql>grant all PRIVILEGES on *.* to test@'localhost' identified  by '123456';


***必须先创建用户***

>(密码规则:mysql8.0以上密码策略限制必须要大小写加数字特殊符号):

`create user '输入的用户'@'%' identified  by '输入的密码;`

***再进行赋值:***

`grant all privileges on *.* to '输入的用户'@'%' with grant option;`

***最后刷新一下:***

`flush privileges;`

当你进行远程连接是,会出现这样的错误:

Unable to load authentication plugin 'caching_sha2_password'.

是因为mysql8使用的是caching_sha2_password加密规则,最简单的方法是修改远程连接用户的加密规则:

`ALTER USER '输入的用户'@'%' IDENTIFIED WITH mysql_native_password BY '输入的密码';`


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM