开发者

在linux系统中使用通用包安装Mysql的步骤

开发者 https://www.devze.com 2025-10-24 09:04 出处:网络 作者: 位步
目录一、linux 通用包安装 mysql1、下载并校验安装包(以 8.0.33 为例,建议校验 sha256)2、解压并放置到统一目录(统一使用 /usr/local/mysql8)3、创建 mysql 用户与数据目录4、创建 data 数据存储目录5、授权mys
目录
  • 一、linux 通用包安装 mysql
    • 1、下载并校验安装包(以 8.0.33 为例,建议校验 sha256)
    • 2、解压并放置到统一目录(统一使用 /usr/local/mysql8)
    • 3、创建 mysql 用户与数据目录
    • 4、创建 data 数据存储目录
    • 5、授权mysql用户
    • 6、初始化数据库
    • 7、安装为系统服务(systemd,推荐)
    • 8、基本配置文件(/etc/my.cnf)
    • 9、启动与验证
    • 10、首次登录后的安全设置(在 mysql 客户端内执行)
    • 11、开放远程访问(可选,谨慎)
    • 12、常用维护命令
  • 二、关键配置与安全建议​
    • 三、常见坑与排查要点​

      一、Linux 通用包安装 MySQL

      1、下载并校验安装包(以 8.0.33 为例,建议校验 sha256)

      https://downloads.mysql.com/archives/community/

      在linux系统中使用通用包安装Mysql的步骤

      cd /data
      wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz.
      # 可选:校验 sha256(从官网下载页复制对应校验值)
      # sha256sum mysql-8.0.33-linux-glibc2.12-x86_64.tar.xhttp://www.devze.comz

      2、解压并放置到统一目录(统一使用 /usr/local/mysql8)

      tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local
      ln -s /usr/local/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql8

      3、创建 mysql 用户与数据目录

      groupadd -r mysql
      useradd -r -g mysql -s /sbin/nologin -d /usr/local/mysql8 mysql

      4、创建 data 数据存储目录

      mkdir -p /usr/local/mysql8/data /usr/local/mysql8/log

      5、授权mysql用户

      chown -R mysql.mysql /data/mysql8/

      6、初始化数据库

      这里需要记住初始密码

      /usr/local/mysql8/bin/mysqld --user=mysql --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data/ --initialize --lower-case-table-names=1

      在linux系统中使用通用包安装Mysql的步骤

      7、安装为系统服务(systemd,推荐)

      cp /usr/local/mysql8/support-files/mysql.server /etc/systemd/system/mysqld.service
      systemctl daemon-reload
      systemctl enable --now mysqld

      8、基本配置文件(/etc/my.cnf)

      [mysqld]
      # 目录
      basedir=/usr/local/mysql8
      datadir=/usr/local/mysql8/data
      socket=/usr/local/mysql8/myjssql.sock
      log-error=/usr/local/mysql8/log/mysqld.log
      pid-file=/usr/local/mysql8/log/mysqld.pid
      # 端口
      port=3306
      # 字符集与排序规则
      character-set-server=utf8mb4
      collation-server=utf8mb4_unicode_ci
      skip-character-set-client-handshake
      # InnoDB
      default-storage-engine=INNODB
      innodb_buffer_pool_size=1G
      innodb_log_file_size=256M
      innodb_flush_method=O_DIRECT
      innodb_file_per_table=ON
      innodb_flush_log_at_trx_commit=1
      sync_binlog=1
      # 连接与安全
      max_connections=200
      skip-name-resolve
      default_authentication_plugin=mysql_native_password
      # 严格模式与 SQL 模式
      sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,ONLY_FULL_GROUP_BY
      [client]
      socket=/usr/local/mysql8/mysql.sock
      default-character-set=utf8mb4
      [mysql]
      prompt="\\u@\\h [\\d]> "
      no-auto-rehash

      9、启动与验证

      systemctl restart mysqld
      systemctl status mysqld
      # 首次登录(使用初始化时记录的临时密码)
      /usr/local/mysql8/bin/mysql -uroot -p

      10、首次登录后的安全设置(在 mysql 客户端内执行)

      -- 1) 修改 root 本地密码(满足策略)
      ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourP@ssw0rd';
      FLUSH PRIVILEGES;
      -- 2) 安全基线(删除匿名、禁止远程 root、删测试库、验证密码)
      DELETE FROM mysql.user WHERE User='';
      DROP DATABASE IF EXISTS test;
      DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourP@ssw0rd';
      -- 如需本机应用以 root 连接,可添加:
      -- CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'YourP@ssw0rd';
      -- GRANT ALL ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
      -- FLUSH PRIVILEGES;
      -- 3) 创建应用用户(示例,按需调整权限与来源)
      CREATE USER 'app'@'10.0.0.%' IDENTIFIED WITH mysql_native_password BY 'AppP@ssw0rd_456!';
      GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON appdb.* TO 'app'@'10.0.0.%';
      FLUSH PRIVILEGES;

      11、开放远程访问(可选,谨慎)

      # 仅在确有需要时创建远程用户,并限制来源网段
      /usr/local/mysql8/bin/mysql -uroot -p -e "
      CREATE USER 'app'@'10.0.0.%' IDENTIFIED WITH mysql_native_password BY 'AppStrongP@ssw0rd_456!';
      GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON appdb.* TOpython 'app'@'10.0.0.%';
      FLUSH PRIVILEGES;"
      # 系统防火墙(Centos/RHEL)
      firewall-cmd --permanent --add-rich-rule='rule family="ifZGnWxgoxQpv4" source address="10.0.0.0/24" port protocol="tcp" port="3306" accept'
      firewall-cmd --reload
      # Ubuntu/Debian
      # sudo ufw allow from 10.0.0.0/24 to any port 3306 proto tcp

      12、常用维护命令

      # 查看状态/重启
      systemctl status mysqld
      systemctl restart mysqld
      # 登录
      /usr/local/mysql8/bin/mysql -uroot -p
      # 设置开机自启/关闭
      systemctl enable mysqld
      systemctl disable mysqld

      二、关键配置与安全建议​

      1、字符集与排序规则:应用普遍需要 ​utf8mb4/utf8mb4_unicode_ci;不建议在 Linux 上启用 ​lower_case_table_names=1​(InnoDB 不支持,易导致导入报错)。

      2、远程访问:默认只监听 ​127.0.0.1​ 更安全;如需远程,创建最小权限的专用账号并限制来源网段,必要时通过 ​VPN/SSH 隧道​ 管理。

      3、防火墙与端口:仅放行必要来源的 ​3306/tcp,避免对公网全量开放。

      4、密码策略与过期:保持 ​VALIDATE_PASSWORD​(或等效强策略),定期轮换高权限账号密码。

      5、日志与审计:生产环境建议开启 ​错误日志、按需开启 ​慢查询日志;如需更强的审计能力,可评估企业版php审计插件或合规替代方案。

      6、SSL/TLS:跨公网或跨机房连接务必启用 ​SSL/TLS,并限制不安全协议/加密套件。

      7、备份与恢复:制定并演练 ​全量+增量​ 备份策略(如 mysqldump/xtrabackup),定期验证可恢复性

      三、常见坑与排查要点​

      1、路径与权限:确保 ​basedir、datadir、log-error、socket​ 等路径存在且属主为 ​mysql:mysql;错误日志是定位启动失败的第一入口。

      2、服务未启动/未开机自启:优先用 ​systemctl status/start/enable;不要混用 SysV 脚本与 systemd。

      3、无法远程连接:检查 ​bind-address、用户 ​Host​ 字段、防火墙与云安全组、是否创建了对应用户并具备相应权限。

      4、密码复杂度不满足:调整策略或使用更强的密码;必要时在测试环境临时降低策略后及时恢复。

      5、忘记 root 密码:在可控环境下可临时停止服务,使用 ​​–skip-grant-tables​ 启动后重置密码,再恢复正常启动方式

      到此这篇关于在linux系统中使用通用包安装Mysql的步骤的文章就介绍到这了,更多相关linux通用包安装mysql内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号