Centos 7 二进制MySQL 8使用教程

  • 安装
  • 下载MySQL依赖库libaio
  • 下载MySQL依赖库ncurses
  • 下载二进制发行版本
  • 创建mysql用户和用户组
  • 解压安装包,并放到指定位置,并修改目录拥有者和权限
  • 添加环境变量
  • 创建数据目录(不可以直接创建datadir目录,否则在初始化时会报错)
  • 修改配置文件my.cnf(简单配置)
  • 使用参数--validate-config检验配置文件
  • 初始化
  • 安全启动
  • 测试(可忽略)
  • 使用mysql_secure_installation提高MySQL数据库安装安全性
  • 使用mysql客服端连接MySQL server
  • 修改root密码
  • 忘记root密码
  • 升级(就地升级)


安装

下载MySQL依赖库libaio

$> yum install -y libaio # install library

下载MySQL依赖库ncurses

$> yum install -y ncurses ncurses-devel

下载二进制发行版本

$> wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz

创建mysql用户和用户组

$> groupadd mysql
$> useradd -r -g mysql -s /bin/false mysql

解压安装包,并放到指定位置,并修改目录拥有者和权限

$> tar xvf /path/to/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
$> mv mysql-8.0.27-linux-glibc2.12-x86_64 /usr/local/mysql
$> chown -R mysql:mysql /usr/local/mysql
$> chmod -R 750 /usr/local/mysql

添加环境变量

$> export PATH=$PATH:/usr/local/mysql/bin

创建数据目录(不可以直接创建datadir目录,否则在初始化时会报错)

$> mkdir -p /data

修改配置文件my.cnf(简单配置)

[mysqld]
  basedir=/usr/local/mysql
  datadir=/data/mysql #指定数据目录,不可以手动创建,否则初始化时报错
  socket=/tmp/mysql.sock

使用参数–validate-config检验配置文件

$> mysqld --defaults-file=/etc/my.cnf --validate-config

如果未发现错误,则服务器以退出代码 0 终止。如果发现错误,服务器将显示诊断消息并以退出代码 1 终止并在终端打印错误信息

初始化

  • 用于–initialize“ 默认安全”安装(即包括生成随机初始 root密码)
  • 使用–initialize-insecure,不会root生成密码
$> bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
$> bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql

若初始化时使用了–initialize-insecure,连接后修更新root密码

$> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';

初始化时配置文件不应许有多余的文件,若配置文件中数据目录和命令中指定的路径–datadir=/path不一致会报错,数据目录也不可以提前手动创建,否则也会报错,出现该错误直接删除数据目录再初始化即可,配置文件中若指定了log文件路径,文件不存在时也会报错

安全启动

$> mysqld_safe &

测试(可忽略)

$> ps aux|grep mysqld #查看mysqld进程是否正在运行
$> mysqladmin version #输出MySQL版本信息
$> mysqlshow #查看MySQL数据库中所有的database
$> mysqlshow mysql #查看database mysql中的所有table
$> mysql -e "SELECT User, Host, plugin FROM mysql.user" mysql #测试客户端查询
$> mysqladmin shutdump #尝试关闭MySQL服务
$> bin/mysqld_safe --user=mysql & #重启服务

使用mysql_secure_installation提高MySQL数据库安装安全性

$> mysql_secure_installation

根据输出完成配置

  • 设置root密码
  • 控制root用户是否可以远程连接
  • 删除匿名用户
  • 删除test库

使用mysql客服端连接MySQL server

$> mysql -uroot -p -S /tmp/mysql.sock

修改root密码

  1. 初始化后的密码存在错误日志中,通过日志查看密码,或在初始化时标准输出复制密码,无密码可直接连接
  2. root使用密码 连接到服务器
  3. 修改密码
$> mysql -u root -p
Enter password: (enter the random root password here)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
mysql> flush privileges;

忘记root密码

  • 关闭MySQL服务,添加参数–skip-grant-tables重启
  • 无密码连接
  • 修改
$> mysqld_safe --user=mysql  --skip-grant-tables &
$> mysql -u root
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
mysql> flush privileges;

升级(就地升级)

  • 下载符合要求的二进制包XXX.tar.xz,并上传到指定的服务器
  • 解压替换旧的basedir文件
$> tar xvf xxx.tar.xz
$> rm -rf /usr/local/mysql
$> mv xxx /user/local/mysql
$> chown -R mysql:mysql /usr/local/mysql
$> chmod -R 750 /usr/local/mysql
  • 使用旧的配置文件与数据目录启动新版本MySQL服务(默认读取配置文件/etc/my.cnf)(无需初始化)
$> mysqld_safe &