Linux,  Mysql,  运维

mysql8 General版本安装指南

此文章详细阐明了如何在离线环境下,使用mysql官方General版本在centos7部署mysql8。

  1. 官网下载mysql Generic 版本,Generic版本是通用的,不用编译的,二进制的。
    https://dev.mysql.com/downloads/mysql/
  2. 将安装包导入linux系统
  3. 检查是否已存在mysql命令
    rpm -qa|grep mariadb
    rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
  4. 检查是否已存在mysql用户,若没有,进行添加
    useradd -m -p password mysql
    该命令将创建一个名为 mysql 的用户,并在 /home 目录下创建一个与用户名相同的目录。
    其中,-m 参数表示创建用户时同时创建其对应的 home 目录
    -p 参数后面接的是密码的加密字符串(使用 openssl passwd -1 命令生成)。
  5. 解压
    tar -xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
  6. 将解压后的文件夹复制到/usr/local/mysql8
    mv mysql-8.0.32-linux-glibc2.12-x86_64/ /usr/local/mysql8
    chown -R mysql:mysql /usr/local/mysql8/
  7. 修改/etc/profile,添加环境变量
    尾部添加:
    export PATH=$PATH:/usr/local/mysql8/bin
    或者
    echo 'export PATH=$PATH:/usr/local/mysql8/bin' >> /etc/profile
    source /etc/profile
  8. 编辑/etc/my.cnf

    [mysqld]
    # 数据存储路径
    datadir=/home/mysql_data
    
    # MySQL使用的套接字文件路径
    socket=/tmp/mysqld.sock
    
    # General
    port = 3306
    user = mysql
    
    # 错误日志文件路径
    log-error=/home/mysql_log/mysqld.log
    
    # 进程ID文件路径
    pid-file=/home/mysql_pid/mysqld.pid
    
    # 配置MySQL字符集
    character-set-server=utf8mb4
    
    # 配置innodb缓存大小
    innodb_buffer_pool_size=12G
    
    # 设置innodb文件大小
    innodb_log_file_size=2G
    
    # 最大连接数
    max_connections=1000
    
    # 读写线程数
    innodb_read_io_threads=4
    innodb_write_io_threads=4
    
    # MySQL使用的线程数
    innodb_thread_concurrency=16
    
    # 执行查询的最大时间,超时将被终止
    max_execution_time=300
    
    # 开启慢查询日志
    slow_query_log=1
    
    # 慢查询日志存放位置
    slow_query_log_file=/home/mysql_log/mysql-slow.log
    
    # 慢查询阈值,超过这个时间的查询被认为是慢查询
    long_query_time=2
    
    # 开启二进制日志
    log-bin=mysql-bin
    
    # MySQL服务器所监听的IP地址
    bind-address=0.0.0.0
    
    # MySQL客户端模块配置
    [client]
    default-character-set=utf8mb4
    
    # MySQL服务器模块配置
    [mysql]
    # 配置MySQL客户端模块使用的套接字文件路径
    socket=/tmp/mysqld.sock
    
    # MySQL客户端默认字符集
    default-character-set=utf8mb4
    
    [mysqldump]
    # 配置mysqldump客户端模块使用的套接字文件路径
    socket=/tmp/mysqld.sock
  9. 创建数据目录、日志目录、pid文件目录

    mkdir /home/mysql_data
    mkdir /home/mysql_log
    mkdir /home/mysql_pid
    
    chown -R mysql:mysql /home/mysql_*
  10. 初始化mysql,正常没有任何提示
    mysqld --defaults-file=/etc/my.cnf --initialize-insecure
  11. 复制/usr/local/mysql8/support-files/mysql.server到/etc/init.d/mysql
    cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysql
    编辑mysql.server文件,修改以下配置项
    basedir=/usr/local/mysql8
    datadir=/home/mysql_data
  12. 重新加载 systemd 系统管理器的配置文件和单元文件

    systemctl daemon-reload
    systemctl start mysql
    systemctl status mysql

    执行以下命令切换身份验证方式:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

    将上述命令中的“新密码”替换为你要设置的新密码即可。

如果在centos8/9上发现执行mysql命令报错

mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

可以这么做

find /usr -name "libtinfo.so*"

# 显示如下:
/usr/lib64/libtinfo.so
/usr/lib64/libtinfo.so.6.2
/usr/lib64/libtinfo.so.6

创建一个软连接
ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5

使用systemctl管理:

下面是使用systemctl管理mysql的具体步骤:

  1. 创建mysql.service文件

/etc/systemd/system/目录下创建mysql.service文件,内容如下:

[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql8/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=infinity
LimitNPROC=infinity
Restart=always
PrivateTmp=true

[Install]
WantedBy=multi-user.target

该文件定义了mysql服务的基本信息,如服务名称、服务类型、服务运行所需的用户、服务执行命令以及服务启动顺序等。

  1. 重新加载systemd配置文件

执行以下命令重新加载systemd配置文件:

systemctl daemon-reload
  1. 启动mysql服务

执行以下命令启动mysql服务:

systemctl start mysql
  1. 设置mysql服务开机自启动

执行以下命令设置mysql服务开机自启动:

systemctl enable mysql

这样,在下次系统启动时,mysql服务就会自动启动了。

  1. 查看mysql服务状态

执行以下命令可以查看mysql服务的运行状态:

systemctl status mysql

如果mysql服务已经成功启动,会显示"active (running)"的状态信息。

2条评论

留言

您的邮箱地址不会被公开。 必填项已用 * 标注