MySQL 安装教程: Linux 上安装 MySQL 8.33 Generic Binaries

以下是 OpenAnolis 8.6 上安装 MySQL 8.33 Generic Binaries 的示例,适用 REHL 及衍生版本。

1. 准备工作

  • 检查系统要求
  • 更新系统软件包

2. 下载 MySQL 8.33 Generic Binaries

  • 从 MySQL 官方网站下载 Generic Binaries

    image-20240716144024463

    在 MySQL 官方下载页面上,通常会看到两种不同的压缩 TAR 存档文件类型:Compressed TAR ArchiveCompressed TAR Archive, Test Suite。以下是它们的区别:

    • Compressed TAR Archive

      • 内容: 这个文件包含 MySQL 的主要二进制文件、库文件和支持文件。它是用来安装和运行 MySQL 数据库服务器的。

      • 用途: 用于生产环境或任何需要 MySQL 服务器的地方。

    • Compressed TAR Archive, Test Suite

      • 内容: 除了包含 MySQL 的主要二进制文件、库文件和支持文件外,还包括 MySQL 的测试套件。这些测试套件包含一系列的测试文件和脚本,用于验证 MySQL 的正确性和稳定性。

      • 用途: 主要用于开发环境或测试环境,开发人员可以使用这些测试套件来进行回归测试或验证其配置是否正确。

  • 选择哪个?

    • 生产环境: 选择 Compressed TAR Archive,因为它只包含运行 MySQL 所需的文件。
    • 开发和测试环境: 选择 Compressed TAR Archive, Test Suite,因为它包含额外的测试工具,可以帮助开发人员验证其安装和配置。
  • 下载适合你操作系统的通用二进制文件

    • glibc 是 GNU C Library,是 Linux 系统中的一个重要组件,提供了系统调用和基本函数库。MySQL 在构建时会依赖于特定版本的 glibc

      1. 可以使用以下命令来检查系统上安装的 glibc 版本

        ldd --version
        

        输出的第一行会显示 glibc 版本,例如:

        ldd (GNU libc) 2.28
        
      2. 下载对应 glibc 的安装包

        image-20240716144357976

4. 解压 MySQL Binary 包

  • 将下载的 tar 包解压到指定目录

    sudo mkdir -p /usr/local/mysql
    sudo tar xf /tmp/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz -C /usr/local/mysql --strip-components=1
    

5. 卸载 mariadb-libs 库

  • 卸载 mariadb 如果存在

    sudo dnf remove -y mariadb-libs
    

6. 创建 MySQL 用户和组

  • 创建 MySQL 用户和组

    sudo groupadd mysql
    sudo useradd -r -m -g mysql -s /bin/false mysql
    

7. 初始化 MySQL 数据目录

  • 初始化 MySQL 数据目录

    sudo mkdir -p /data/mysql/{data,log,binlog,conf,tmp}
    
  • 设置 MySQL 的目录权限

    sudo chown -R mysql:mysql /usr/local/mysql
    sudo chown -R mysql:mysql /data/mysql
    

8. 配置 MySQL

  • 创建和编辑 MySQL 配置文件(my.cnf)

    sudo vi /data/mysql/conf/my.cnf
    

    完整内容如下:

    [mysqld]
    sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    character_set_server = utf8mb4
    collation-server = utf8mb4_bin
    lower_case_table_names = 1
    user = mysql
    server_id = 1
    port = 3306
    default-time-zone = '+08:00'
    enforce_gtid_consistency = ON
    gtid_mode = ON
    binlog_checksum = none
    default_authentication_plugin = mysql_native_password
    datadir = /data/mysql/data
    pid-file = /data/mysql/tmp/mysqld.pid
    socket = /data/mysql/tmp/mysqld.sock
    tmpdir = /data/mysql/tmp/
    skip-name-resolve = ON
    open_files_limit = 65535
    table_open_cache = 2000
    
    ################# InnoDB ########################
    innodb_data_home_dir = /data/mysql/data
    innodb_data_file_path = ibdata1:512M;ibdata2:512M:autoextend
    innodb_buffer_pool_size = 12000M
    innodb_flush_log_at_trx_commit = 1
    innodb_io_capacity = 600
    innodb_lock_wait_timeout = 120
    innodb_log_buffer_size = 8M
    innodb_log_file_size = 200M
    innodb_log_files_in_group = 3
    innodb_max_dirty_pages_pct = 85
    innodb_read_io_threads = 8
    innodb_write_io_threads = 8
    innodb_thread_concurrency = 32
    innodb_file_per_table
    innodb_rollback_on_timeout
    innodb_undo_directory = /data/mysql/data
    innodb_log_group_home_dir = /data/mysql/data
    
    ################### Session ###########################
    join_buffer_size = 8M
    key_buffer_size = 256M
    bulk_insert_buffer_size = 8M
    max_heap_table_size = 96M
    tmp_table_size = 96M
    read_buffer_size = 8M
    sort_buffer_size = 2M
    max_allowed_packet = 64M
    read_rnd_buffer_size = 32M
    
    ############ Log settings ###################
    log-error = /data/mysql/log/mysqld.err
    log-bin = /data/mysql/binlog/binlog
    binlog-format = ROW
    server_id = 1
    log_bin_index = /data/mysql/binlog/binlog.index
    max_binlog_size = 500M
    slow_query_log_file = /data/mysql/log/slow.log
    slow_query_log = 1
    long_query_time = 10
    log_queries_not_using_indexes = ON
    log_throttle_queries_not_using_indexes = 10
    log_slow_admin_statements = ON
    log_output = FILE,TABLE
    master_info_file = /data/mysql/binlog/master.info
    

9. 初始化数据库

  • 配置系统环境变量

    sudo echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
    source /etc/profile
    
  • 首次安装,初始化数据库

    mysqld --defaults-file=/data/mysql/conf/my.cnf  --initialize-insecure  --user=mysql
    
  • 启动数据库

    mysqld_safe --defaults-file=/data/mysql/conf/my.cnf &
    

    image-20240716150834107

  • 查看数据库状态

    lsof -i:3306
    ps -ef | grep mysql | grep -v grep
    

    image-20240716150724359

10. 配置安全性和基本设置

  • 配置 root 用户密码

    1. 连接数据库

      mysql -S /data/mysql/tmp/mysqld.sock
      
    2. 查看当前用户并修改root密码

      select host,user,authentication_string from mysql.user;
      ALTER USER 'root'@'localhost' IDENTIFIED BY 'p5yY62KM';
      flush privileges;
      

      image-20240716152149332

11. 创建 MySQL 服务

  • 创建软连接并关闭数据库

    ln -s /data/mysql/tmp/mysqld.sock /tmp/mysql.sock
    mysqladmin -u root -p shutdown
    

    image-20240716152723239

  • 创建服务

    1. 创建文件

      sudo vi /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
       
      # Have mysqld write its state to the systemd notify socket
      Type=notify
       
      # Disable service start and stop timeout logic of systemd for mysqld service.
      TimeoutSec=0
       
      # Start main service
      ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf $MYSQLD_OPTS
       
      # Use this to switch malloc implementation
      EnvironmentFile=-/etc/sysconfig/mysql
       
      # Sets open_files_limit
      #LimitNOFILE = 10000
       
      Restart=on-failure
       
      RestartPreventExitStatus=1
       
      # Set environment variable MYSQLD_PARENT_PID. This is required for restart.
      Environment=MYSQLD_PARENT_PID=1
       
      PrivateTmp=false
      
    2. 授权

      chmod 644 /usr/lib/systemd/system/mysqld.service
      
  • 启动 MySQL 服务

    systemctl start mysqld
    systemctl status mysqld
    systemctl enable mysqld.service
    

    image-20240716153052233

12. 验证安装

  • 验证 MySQL 版本

    image-20240716153215414

  • 创建数据库和用户

    1. 创建数据库 testdb,字符集:utf8mb4 ,排序规则:utf8mb4_bin

      CREATE DATABASE testdb
          DEFAULT CHARACTER SET utf8mb4
          DEFAULT COLLATE utf8mb4_bin;
      
    2. 创建用户

      CREATE USER 'new_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
      
    3. 用户权限

      GRANT ALL PRIVILEGES ON testdb.* TO 'new_user'@'%' WITH GRANT OPTION;
      
    4. 刷新权限

      FLUSH PRIVILEGES;
      
  • 进行简单的连接和查询测试

    image-20240716153951895

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值