• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在 centOS9 上安装 MySQL8(rpm 包方式)

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

    1、查看旧版本MySql

    rpm -qa | grep mysql
    

    2、逐个删除掉旧的组件。--nodeps参数不要加,若有参数可能会删除其他软件包的依赖包。

    rpm -e {file-name}
    

    • --nodeps:在rpm安装包时,不检查依赖关系,例如安装B,B依赖C导致无法安装,使用--nodeps就可以安装成功。
    • --force:强制安装。

    3、卸载干净后删除/etc/my.cnf

    cd /etc/
    rm -f my.cnf
    


    下载解压MySQL8

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

    MySQL几个版本的选择

    • MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
    • MySQL Enterprise Edition 企业版本,需付费,可以试用30天。
    • MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。
    • MySQL Cluster CGE 高级集群版,需付费。
    • MySQL Workbench(GUITOOL)一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。MySQLWorkbench又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL WorkbenchSE)。。

    MySQL Community Server是开源免费的,这也是我们通常用的MySQL的版本。

    centOS是基于Red Hat。

    • rpm bundle:是该版本所有包的集合。一般是把服务器端要用的都安装上。
    • rpm package:是某个特定的包,比如server,client,shared lib等。
    • Compressed TAR Archive:是源码,必须用源码方式安装。这个是源码,需要自己编译的,也有编译好,但不是安装包的。
    cd /tmp
    wget -c https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.30-1.el9.x86_64.rpm-bundle.tar  --no-check-certificate
    
    mkdir mysql-8.0.30
    tar -xvf mysql-8.0.30-1.el9.x86_64.rpm-bundle.tar  -C ./mysql-8.0.30
    

    解压后的全部mysql文件

    mysql-community-client-8.0.30-1.el9.x86_64.rpm
    mysql-community-client-debuginfo-8.0.30-1.el9.x86_64.rpm
    mysql-community-client-plugins-8.0.30-1.el9.x86_64.rpm
    mysql-community-client-plugins-debuginfo-8.0.30-1.el9.x86_64.rpm
    mysql-community-common-8.0.30-1.el9.x86_64.rpm
    mysql-community-debuginfo-8.0.30-1.el9.x86_64.rpm
    mysql-community-debugsource-8.0.30-1.el9.x86_64.rpm
    mysql-community-devel-8.0.30-1.el9.x86_64.rpm
    mysql-community-icu-data-files-8.0.30-1.el9.x86_64.rpm
    mysql-community-libs-8.0.30-1.el9.x86_64.rpm
    mysql-community-libs-debuginfo-8.0.30-1.el9.x86_64.rpm
    mysql-community-server-8.0.30-1.el9.x86_64.rpm
    mysql-community-server-debug-8.0.30-1.el9.x86_64.rpm
    mysql-community-server-debug-debuginfo-8.0.30-1.el9.x86_64.rpm
    mysql-community-server-debuginfo-8.0.30-1.el9.x86_64.rpm
    mysql-community-test-8.0.30-1.el9.x86_64.rpm
    mysql-community-test-debuginfo-8.0.30-1.el9.x86_64.rpm
    


    安装MySQL8

    mysql8.0文档中的安装说明
    Dependency relationships exist among some of the packages. If you plan to install many of the packages, you may wish to download the RPM bundle tar file instead, which contains all the RPM packages listed above, so that you need not download them separately.In most cases, you need to install the mysql-community-server, mysql-community-client, mysql-community-libs, mysql-community-common, and mysql-community-libs-compat packages to get a functional, standard MySQL installation. To perform such a standard, basic installation, go to the folder that contains all those packages。more>>>

    cd /tmp/mysql-8.0.30
    dnf -y install mysql-community-{server,client,common,libs,icu,debuginfo,debugsource,test}-*
    

    上述安装过程,安装程序会自动添加用户以及用户组mysql,所以只要修改 mysql 数据所在的目录的所有者为mysql

    #查看系统上存在的所有组
    less /etc/group 
    
    #查看系统上 mysql 组下的全部成员
    groups mysql
    
    Files or ResourcesLocation
    Client programs and scripts/usr/bin
    mysqld server/usr/sbin
    Configuration file/etc/my.cnf
    Data directory(默认数据库数据存放)/var/lib/mysql
    Error log file

    For RHEL, Oracle Linux, CentOS or Fedora platforms:
    /var/log/mysqld.log

    For SLES:
    /var/log/mysql/mysqld.log

    Value of secure_file_priv/var/lib/mysql-files
    System V init script

    For RHEL, Oracle Linux, CentOS or Fedora platforms:
    /etc/init.d/mysqld

    For SLES:
    /etc/init.d/mysql

    Pid file(默认进程 pid)/var/run/mysql/mysqld.pid
    Socket(默认交互文件 sock)/var/lib/mysql/mysql.sock
    Keyring directory/var/lib/mysql-keyring
    Unix manual pages/usr/share/man
    Include(header)files/usr/include/mysql
    Libraries/usr/lib/mysql
    Miscellaneous support files(for example, error messages, and character set files)/usr/share/mysql

    mysql默认配置,可以变成到其他位置。根据个人习惯,做修改:

    mkdir -p /usr/local/mysql
    mkdir -p /usr/local/mysql/data
    mkdir -p /usr/local/mysql/run
    mkdir -p /usr/local/mysql/tmp
    chown -R  mysql:mysql /usr/local/mysql
    chown mysql:mysql /var/log/mysqld.log
    

    查看文件权限

    ls -l /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
    tmpdir=/usr/local/mysql/tmp
    log-error=/var/log/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
    


    启动Mysql

    如果启用了systemd操作系统,则应使用标准的systemctl(或带有反向参数的服务)命令(例如stop,start, status和restart)来管理MySQL服务器服务。该mysqld服务默认情况下处于启用状态,并在系统重新启动时启动。

    systemctl start mysqld
    


    假设服务器的数据目录为空,则在服务器首次启动时,会发生以下情况:

    • 服务器已初始化。
    • SSL证书和密钥文件在数据目录中生成。
    • validate_password 已安装并启用。
    • 'root'@'localhost'创建一个超级用户帐户。设置超级用户的密码并将其存储在错误日志文件中。要显示它,请对RHEL,Oracle Linux,CentOS和Fedora系统使用以下命令:grep 'temporary password'/var/log/mysqld.log

    使用生成的临时密码登录,并为超级用户帐户设置自定义密码:

    注意: validate_password 默认情况下已安装。通过实施的默认密码策略 validate_password 要求密码至少包含一个大写字母,一个小写字母,一位数字和一个特殊字符,并且密码总长度至少为8个字符。

    查看mysql 的启动状态

    pidof mysqld
    ps aux | grep mysqld
    


    Mysql修改密码

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

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

    根据上步查到的随机密码登录 mysql

    MySQL也有空密码的情况。可以直接查看mysqld.log文件的内容

    vim /var/log/mysqld.log
    

    登录 MySQL 数据库:

    mysql -u root -p
    alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPassWord';
    
    flush privileges;
    show variables like '%character%';
    show variables like '%collation%';
    
    exit;
    

    上面配置中,已经修改默认字符集为utf8mb4



    MySQL8密码加密

    在mysql8时,出现了一种新的验证方式caching_sha2_password,这个方式成为了新的验证机制,默认在配置密码的时候也是用的这种方式进行处理的,原有的mysql_native_password被替换掉了。

    /etc/my.cnf中将mysql_native_password.前面的注释去掉。即改回老的验证方式:

    [mysqld]
    default_authentication_plugin=mysql_native_password
    

    新安装是默认的新密码,带注释的。

    [mysqld]
    # default_authentication_plugin=mysql_native_password
    


    设置mysqld 开机自启动

    cd /tmp
    
    systemctl enable mysqld
    


    mysql启动、停止、重启

    systemctl start mysqld
    systemctl stop mysqld
    systemctl restart mysqld
    


    mysqld.service

    上面的安装方式,会自动生成/usr/lib/systemd/system/mysqld.service文件。其设置:

    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]
    User=mysql
    Group=mysql
    
    Type=notify
    
    # Disable service start and stop timeout logic of systemd for mysqld service.
    TimeoutSec=0
    
    
    ExecStartPre=+/usr/bin/mysqld_pre_systemd
    
    # Start main service
    ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS
    
    # Use this to switch malloc implementation
    EnvironmentFile=-/etc/sysconfig/mysql
    
    # Sets open_files_limit
    LimitNOFILE = 10000
    
    Restart=on-failure
    
    RestartPreventExitStatus=1
    
    # Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
    Environment=MYSQLD_PARENT_PID=1
    
    PrivateTmp=false
    



    卸载 MySQL 8

    根据需要也可以卸载mysql。针对 mysql 8.0.29 版本,下载方法如下:

    rpm -qa | grep mysql
    
    显示如下:
    rpm -e mysql-community-server-debuginfo-8.0.30-1.el9.x86_64
    rpm -e mysql-community-client-debuginfo-8.0.30-1.el9.x86_64
    rpm -e  mysql-community-client-plugins-debuginfo-8.0.30-1.el9.x86_64
    rpm -e mysql-community-client-8.0.30-1.el9.x86_64
    rpm -e mysql-community-client-plugins-8.0.30-1.el9.x86_64
    rpm -e mysql-community-libs-8.0.30-1.el9.x86_64
    rpm -e mysql-community-libs-debuginfo-8.0.30-1.el9.x86_64
    rpm -e mysql-community-debugsource-8.0.30-1.el9.x86_64
    rpm -e mysql-community-debuginfo-8.0.30-1.el9.x86_64
    rpm -e mysql-community-common-8.0.30-1.el9.x86_64