• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在 centOS9 上安装 MySQL8(通用二进制包 Linux Generic)

    • .tar:只是打包而没有压缩。
    • .tar.gz:是一个压缩包,使用的是 gzip 压缩工具。
    • .tar.xz:也是一个压缩包,使用的是 xz 压缩工具。

    安装之前,首先要卸载干净自己系统上面的原有数据库包,卸载旧版本的 MySql(没有的话,则跳过此步骤)

    # 查看 dnf/yum 是否安装过 mysql
    dnf list installed mysql*
    
    # 根据列表上的名字,进行移除
    dnf remove mysql-community-client mysql-community-common mysql-community-libs mysql-community-server
    
    # 移除数据库
    rm -rf /var/lib/mysql
    
    # 删除配置文件
    rm -f /etc/my.cnf
    
    # 剩余配置文件
    chkconfig --list | grep -i mysql
    chkconfig --del mysqld
    
    # 查看旧版本 MySql
    rpm -qa | grep mysql
    
    # 逐个删除掉旧的 MySql 组件。并且不删除其他软件包的依赖包。
    rpm -e {file-name} em>--nodeps
    
    # 删除配置文件
    rm -f /etc/my.cnf
    
    # 查找之前老版本 MySQL 文件
    find /usr -name mysql
    find /var -name mysql
    find /opt -name mysql
    


    创建 mysql 用户

    # 检查 mysql 用户组是否存在
    cat /etc/group | grep mysql
    
    # 检查 mysql 用户是否存在
    cat /etc/passwd | grep mysql
    
    # 添加 mysql 用户组
    groupadd mysql
    
    # 添加用户
    useradd -r mysql -g mysql -M  -s /sbin/nologin
    


    下载解压 MySQL

    官网下载:https://dev.mysql.com/downloads/mysql/


    通用二进制包,是 MySQL 官方编译好的二进制包,不需要自己再编译,直接使用。

    • *-minimal.tar.xz,最小安装发行版不包括调试二进制文件,并且去除了调试符号,使其明显小于常规二进制发行版。
    • glibc是 GNU 发布的 libc 库,即 c 运行库。
    # 查询 glibc 库版本
    ldd --version
    
    # 显示如下:
    ldd (GNU libc) 2.34
    
    cd /usr/local/src 
    wget -c  https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz --no-check-certificate
    
    # 解压
    tar -xvf  mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz
    
    # 查看解压文件
    ls -l
    
    # 移动到使用目录
    mv mysql-8.0.33-linux-glibc2.28-x86_64 /usr/local/mysql
    


    配置 MySQL

    vim /etc/my.cnf
    
    [mysqld]
    # default_authentication_plugin=mysql_native_password
    datadir=/usr/local/mysql/data
    socket=/usr/local/mysql/run/mysqld.sock
    pid-file=/usr/local/mysql/run/mysqld.pid
    log-error=/var/log/mysql/mysqld.log
    
    user=mysql
    port=3306
    
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    init_connect='SET NAMES utf8mb4'
    skip-character-set-client-handshake=true
    skip_name_resolve
    
    [mysql]
    port=3306
    default-character-set=utf8mb4
    
    [client]
    default-character-set=utf8mb4
    socket=/usr/local/mysql/run/mysqld.sock
    
    [mysqldump]
    quick
    max_allowed_packet=1024M
    default-character-set=utf8mb4
    

    unix、linux 下 lower_case_table_names,默认值为 0。Windows下默认值是 1。Mac OS X下默认值是 2。

    • lower_case_table_names=0:表名存储为给定的大小和比较是区分大小写的。
    • lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写。
    • lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的。
    mkdir /usr/local/mysql/run
    touch /usr/local/mysql/run/mysqld.pid
    touch /usr/local/mysql/run/mysqld.sock
    chown -R mysql:mysql /usr/local/mysql
    
    mkdir -p /var/log/mysql
    touch /var/log/mysql/mysqld.log
    chown -R mysql:mysql /var/log/mysql
    


    添加 MySQL 命令到 PATH 变量

    修改配置文件/etc/profile

    vim /etc/profile
    

    在末尾,添加:

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

    保存退出,然后刷新环境变量,使之立即生效:

    source /etc/profile
    


    或者在 Linux 环境下,直接输入:

    echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
    source /etc/profile
    


    初始化 MySQL

    mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
    

    MySQL 在初始化过程中,会在日志中生成一个随机密码。查看随机密码:

    grep 'temporary password' /var/log/mysql/mysqld.log
    


    启动 MySQL 服务

    首先,开启开启 MySQL 加密链接

    mysql_ssl_rsa_setup
    

    mysql_ssl_rsa_setup 程序用于创建 SSL 证书和密钥文件以及 RSA 密钥对文件,以支持使用 SSL 的安全连接和使用 RSA 通过未加密连接的安全密码交换(如果这些文件丢失)。如果现有的 SSL 文件已经过期,mysql_ssl_rsa_setup 也可用于创建新的 SSL 文件。

    /usr/local/mysql/support-files/mysql.server start
    


    登录 MySQL 修改密码

    mysql -u root -p
    

    报错: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
    


    等录 mysql 后,修改密码:

    alter user 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '这里改成自己需要设定的密码';
    flush privileges;
    


    登录 mysql 后,身份验证方式。

    SELECT USER,PLUGIN FROM mysql.`user`;
    
    # 显示如下:
    +------------------+-----------------------+
    | USER             | PLUGIN                |
    +------------------+-----------------------+
    | mysql.infoschema | caching_sha2_password |
    | mysql.session    | caching_sha2_password |
    | mysql.sys        | caching_sha2_password |
    | root             | caching_sha2_password |
    +------------------+-----------------------+
    


    登录 mysql 后,查看配置的字符集。

    show variables like '%character%';
    
    # 显示如下:
    +--------------------------+----------------------------------+
    | Variable_name            | Value                            |
    +--------------------------+----------------------------------+
    | character_set_client     | utf8mb4                          |
    | character_set_connection | utf8mb4                          |
    | character_set_database   | utf8mb4                          |
    | character_set_filesystem | binary                           |
    | character_set_results    | utf8mb4                          |
    | character_set_server     | utf8mb4                          |
    | character_set_system     | utf8mb3                          |
    | character_sets_dir       | /usr/local/mysql/share/charsets/ |
    +--------------------------+----------------------------------+
    
    
    show variables like '%collation%';
    
    # 显示如下:
    +-------------------------------+--------------------+
    | Variable_name                 | Value              |
    +-------------------------------+--------------------+
    | collation_connection          | utf8mb4_unicode_ci |
    | collation_database            | utf8mb4_unicode_ci |
    | collation_server              | utf8mb4_unicode_ci |
    | default_collation_for_utf8mb4 | utf8mb4_0900_ai_ci |
    +-------------------------------+--------------------+
    
    
    # 查看完毕,退出 mysql
    exit;
    
    # 停止 MySQL 服务
    /usr/local/mysql/support-files/mysql.server stop
    


    设置 MySQL 开机自启动

    vim /usr/lib/systemd/system/mysqld.service
    
    [Unit]
    Description=MySQL Server
    Documentation=mysqld.service
    After=network.target
    After=syslog.target
    
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
    LimitNOFILE = 5000
    
    [Install]
    WantedBy=multi-user.target
    
    # 设置开机自启动
    systemctl enable mysqld
    
    # 重载 mysqld 配置文件
    systemctl daemon-reload
    
    # 启动 mysqld 服务
    systemctl start mysqld
    
    # 停止 mysqld 服务
    systemctl stop mysqld
    
    # 重启 mysqld 服务
    systemctl restart mysqld
    
    # 查看 mysqld 服务状态
    systemctl status mysqld
    pidof mysqld
    ps aux | grep mysqld
    


    开启防火墙 3306 端口

    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    firewall-cmd --reload
    
    # 查看防火墙开放端口
    firewall-cmd --list-all