js企业网站模板,百度下载安装,如何在网站上推广自己的链接,怎样创建个人视频号前言 MySQL作为最流行的开源关系数据库#xff0c;在Linux环境中的安装配置是每个开发者和运维的必备技能。本文将提供一套从零开始的完整安装流程#xff0c;涵盖Ubuntu、CentOS两大主流发行版#xff0c;包含性能优化、安全加固、远程访问配置等生产环境实用技巧#xf…前言MySQL作为最流行的开源关系数据库在Linux环境中的安装配置是每个开发者和运维的必备技能。本文将提供一套从零开始的完整安装流程涵盖Ubuntu、CentOS两大主流发行版包含性能优化、安全加固、远程访问配置等生产环境实用技巧助你快速搭建稳定可靠的MySQL数据库环境。一、发行版选择与环境准备系统要求检查bash1. 确认系统架构和内存uname -m # 查看64位还是32位free -h # 内存至少2GB推荐2. 检查是否已有MySQLsystemctl status mysql或ps aux | grep mysqld3. 清理旧版本如有冲突sudo apt remove --purge mysql-* # Ubuntusudo yum remove mysql* # CentOS二、Ubuntu 22.04/20.04 安装MySQL 8.0官方仓库安装推荐bash更新包列表sudo apt updatesudo apt upgrade -y安装MySQL服务器sudo apt install mysql-server -y查看安装版本mysql --version输出mysql Ver 8.0.33 for Linux on x86_64安全初始化配置bash运行安全安装脚本sudo mysql_secure_installation交互式配置设置密码强度验证策略选0-20最弱2最强设置root密码输入强密码删除匿名用户输入Y禁止root远程登录输入Y生产环境建议删除测试数据库输入Y重新加载权限表输入Y手动配置如需自定义bash如果跳过安全脚本手动设置密码sudo mysqlMySQL命令行中执行ALTER USER ‘root’‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的强密码’;FLUSH PRIVILEGES;EXIT;三、CentOS 8/RHEL 8 安装MySQL 8.0添加官方仓库并安装bash下载MySQL官方仓库sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el8-4.noarch.rpm禁用默认的MySQL模块sudo dnf module disable mysql -y安装MySQL服务器sudo dnf install mysql-community-server -y启动服务并设置开机自启sudo systemctl start mysqldsudo systemctl enable mysqld2. 获取临时密码并修改bash查看临时root密码CentOS首次安装后生成sudo grep ‘temporary password’ /var/log/mysqld.log输出A temporary password is generated for rootlocalhost: xxxxxxxxxx使用临时密码登录mysql -uroot -p输入上面获取的临时密码修改root密码MySQL命令行中执行ALTER USER ‘root’‘localhost’ IDENTIFIED BY ‘你的新密码’;FLUSH PRIVILEGES;3. 运行安全脚本bash登出MySQL后运行mysql_secure_installation按提示完成安全配置与Ubuntu相同四、基础管理与配置服务管理命令bashUbuntu/Debiansudo systemctl start mysql # 启动sudo systemctl stop mysql # 停止sudo systemctl restart mysql # 重启sudo systemctl status mysql # 查看状态sudo systemctl enable mysql # 开机自启CentOS/RHELsudo systemctl start mysqld # 注意服务名不同sudo systemctl status mysqld2. 登录MySQL数据库bash本地登录mysql -u root -p指定主机登录mysql -h localhost -u root -p查看所有数据库SHOW DATABASES;查看用户权限SELECT user, host FROM mysql.user;3. 创建新用户和数据库bash登录MySQL后执行– 创建数据库CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;– 创建用户CREATE USER ‘myuser’‘localhost’ IDENTIFIED BY ‘StrongPass123!’;– 授予权限GRANT ALL PRIVILEGES ON mydb.* TO ‘myuser’‘localhost’;– 刷新权限FLUSH PRIVILEGES;– 查看用户权限SHOW GRANTS FOR ‘myuser’‘localhost’;五、性能优化配置调整MySQL配置文件bash备份原配置sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.backup或CentOSsudo cp /etc/my.cnf /etc/my.cnf.backup编辑配置文件sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # Ubuntusudo nano /etc/my.cnf # CentOS2. 关键优化参数8GB内存服务器示例ini[mysqld]基础设置default_authentication_plugin mysql_native_passwordcharacter-set-server utf8mb4collation-server utf8mb4_unicode_ci连接设置max_connections 200connect_timeout 10wait_timeout 600interactive_timeout 600内存设置key_buffer_size 256Minnodb_buffer_pool_size 4G # 设置为物理内存的50%-70%innodb_log_file_size 512Minnodb_log_buffer_size 16M性能优化innodb_flush_log_at_trx_commit 2 # 平衡性能与安全innodb_flush_method O_DIRECTinnodb_file_per_table 1query_cache_type 0 # MySQL 8.0已移除查询缓存慢查询日志slow_query_log 1slow_query_log_file /var/log/mysql/mysql-slow.loglong_query_time 2log_queries_not_using_indexes 13. 应用配置并重启bash重启MySQL使配置生效sudo systemctl restart mysql # Ubuntusudo systemctl restart mysqld # CentOS检查配置是否生效mysql -u root -p -e “SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;”六、安全加固措施防火墙配置bashUbuntu UFW防火墙sudo ufw allow 3306/tcpsudo ufw reloadCentOS Firewalld防火墙sudo firewall-cmd --zonepublic --add-port3306/tcp --permanentsudo firewall-cmd --reload2. 创建专用MySQL用户非root运行bash创建系统用户组sudo groupadd mysqlgroupsudo useradd -r -g mysqlgroup -s /bin/false mysqldb更改MySQL数据目录权限sudo chown -R mysqldb:mysqlgroup /var/lib/mysqlsudo chmod -R 750 /var/lib/mysql3. 启用SSL加密连接bash检查是否支持SSLmysql -u root -p -e “SHOW VARIABLES LIKE ‘%ssl%’;”自动生成SSL证书如果未启用sudo mysql_ssl_rsa_setup --uidmysql在配置文件中启用SSL添加ssl-ca/var/lib/mysql/ca.pemssl-cert/var/lib/mysql/server-cert.pemssl-key/var/lib/mysql/server-key.pemrequire_secure_transportON # 强制SSL连接4. 审计与监控bash安装审计插件MySQL Enterprise功能社区版可用替代或使用通用日志[mysqld]general_log 1general_log_file /var/log/mysql/general.log定期检查错误日志sudo tail -f /var/log/mysql/error.log七、备份与恢复使用mysqldump备份bash备份单个数据库mysqldump -u root -p mydb mydb_backup_$(date %Y%m%d).sql备份所有数据库mysqldump -u root -p --all-databases all_db_backup_$(date %Y%m%d).sql带压缩备份mysqldump -u root -p mydb | gzip mydb_backup_$(date %Y%m%d).sql.gz2. 定时自动备份Crontabbash编辑crontabcrontab -e添加每天凌晨2点备份0 2 * * * /usr/bin/mysqldump -u root -p密码 mydb /backup/mydb_$(date %Y%m%d).sql0 3 * * * find /backup -name “*.sql” -mtime 7 -delete # 删除7天前备份3. 恢复数据库bash创建新数据库mysql -u root -p -e “CREATE DATABASE mydb_restore;”恢复数据mysql -u root -p mydb_restore mydb_backup.sql或直接在MySQL中执行SOURCE /path/to/backup.sql;八、远程访问配置谨慎开启创建远程访问用户bash登录MySQLmysql -u root -p创建允许远程连接的用户生产环境建议限制IPCREATE USER ‘remoteuser’‘%’ IDENTIFIED BY ‘StrongRemotePass123!’;GRANT ALL PRIVILEGES ON mydb.* TO ‘remoteuser’‘%’;FLUSH PRIVILEGES;更安全的做法限制特定IPCREATE USER ‘remoteuser’‘192.168.1.%’ IDENTIFIED BY ‘StrongRemotePass123!’;2. 修改绑定地址bash编辑配置文件sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # Ubuntu找到bind-address改为bind-address 0.0.0.0 # 允许所有IP访问或bind-address 192.168.1.100 # 指定服务器IP重启MySQLsudo systemctl restart mysql3. 测试远程连接bash从另一台机器测试mysql -h 服务器IP -u remoteuser -p九、故障排除忘记root密码bash停止MySQL服务sudo systemctl stop mysql安全模式启动sudo mysqld_safe --skip-grant-tables 无密码登录mysql -u root重置密码MySQL命令行FLUSH PRIVILEGES;ALTER USER ‘root’‘localhost’ IDENTIFIED BY ‘新密码’;EXIT;重启MySQLsudo systemctl restart mysql2. 端口被占用检查bashsudo netstat -tulnp | grep :3306sudo ss -tulnp | grep :33063. 查看错误日志bashUbuntusudo tail -f /var/log/mysql/error.logCentOSsudo tail -f /var/log/mysqld.log十、生产环境检查清单✅ 安装完成验证MySQL服务正常运行systemctl status mysql可以本地登录mysql -u root -p版本正确mysql --version端口监听正常ss -tuln | grep :3306✅ 安全配置验证root不能远程登录匿名用户已删除测试数据库已删除防火墙已配置使用强密码✅ 性能优化验证配置文件已优化缓冲池大小合适字符集为utf8mb4慢查询日志已开启✅ 备份方案就绪备份脚本已测试自动备份已配置备份文件可正常恢复安装成功标志能够用root用户正常登录MySQL可以创建数据库和用户服务稳定运行无错误日志配置优化后性能提升备份恢复流程测试通过最佳实践建议生产环境避免使用root远程连接定期更新MySQL安全补丁启用binlog用于数据恢复和主从复制使用监控工具如Prometheus Grafana监控数据库状态现在你已经拥有了一个经过优化和安全加固的MySQL数据库环境可以开始部署你的应用了