MySQL作为一种开源的关系型数据库管理系统(RDBMS),以其高效、可靠和易用性成为了众多开发者的首选
本文旨在为Linux系统管理员和开发者提供一份详尽的指南,介绍如何在Linux系统上作为root用户安装MySQL数据库
无论你是初学者还是有一定经验的用户,本文都将为你提供全面的安装和配置步骤
一、准备工作 在安装MySQL之前,确保你的Linux系统已经更新到最新版本,并且具备root权限
不同Linux发行版的安装步骤略有不同,但总体流程相似
本文将以CentOS8和Ubuntu20.04为例进行说明
1.1 更新系统 首先,确保你的系统是最新的
在CentOS8和Ubuntu20.04上,你可以使用以下命令: CentOS 8: bash sudo dnf update -y Ubuntu 20.04: bash sudo apt update sudo apt upgrade -y 1.2 添加MySQL存储库 对于某些Linux发行版,添加MySQL官方存储库可以确保你安装的是最新版本的MySQL
CentOS 8: bash sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm Ubuntu 20.04: MySQL官方存储库在Ubuntu的默认软件源中已经包含,通常不需要额外添加
但如果你需要安装特定版本,可以通过以下方式添加存储库: bash wget https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb 在安装过程中,选择你需要的MySQL版本和产品(如MySQL Server, MySQL Shell等)
二、安装MySQL 2.1 在CentOS8上安装MySQL 添加存储库后,可以开始安装MySQL: bash sudo dnf install -y mysql-community-server 2.2 在Ubuntu20.04上安装MySQL 对于Ubuntu,直接使用apt安装MySQL Server: bash sudo apt install -y mysql-server 三、启动MySQL服务并设置开机自启 安装完成后,需要启动MySQL服务并设置其在系统启动时自动启动
CentOS 8: bash sudo systemctl start mysqld sudo systemctl enable mysqld Ubuntu 20.04: bash sudo systemctl start mysql sudo systemctl enable mysql 四、获取临时root密码 在MySQL首次安装并启动后,MySQL会自动生成一个临时root密码
在CentOS8上,你可以在`/var/log/mysqld.log`文件中找到该密码: bash sudo grep temporary password /var/log/mysqld.log 在Ubuntu20.04上,日志位置可能略有不同,但通常也可以在`/var/log/mysql/error.log`中找到: bash sudo grep temporary password /var/log/mysql/error.log 记下这个临时密码,因为你需要用它来首次登录MySQL
五、安全配置MySQL 首次登录MySQL后,强烈建议运行`mysql_secure_installation`脚本来进行安全配置
bash sudo mysql_secure_installation 在脚本运行过程中,你会被提示进行以下操作: 1.更改root密码:输入你刚获取的临时密码,然后设置新的root密码
2.移除匿名用户:默认情况下,MySQL会创建一个匿名用户,出于安全考虑,建议移除
3.禁止root远程登录:除非你有特定需求,否则建议禁止root用户远程登录
4.删除测试数据库:MySQL安装时会附带一个测试数据库,出于安全考虑,建议删除
5.重新加载权限表:确保所有更改生效
六、配置MySQL用户及权限 MySQL的安全配置完成后,你需要根据实际需求创建数据库和用户,并分配相应的权限
6.1 登录MySQL 使用新设置的root密码登录MySQL: bash mysql -u root -p 6.2 创建数据库和用户 创建一个新的数据库和用户,并授予该用户对数据库的完全访问权限: sql CREATE DATABASE mydatabase; CREATE USER myuser@localhost IDENTIFIED BY mypassword; GRANT ALL PRIVILEGES ON mydatabase. TO myuser@localhost; FLUSH PRIVILEGES; 6.3 配置远程访问(可选) 如果你需要从远程主机访问MySQL数据库,需要修改MySQL的配置文件`/etc/my.cnf`(在CentOS8上)或`/etc/mysql/mysql.conf.d/mysqld.cnf`(在Ubuntu20.04上),找到`bind-address`配置项,将其注释掉或更改为`0.0.0.0`
ini bind-address =127.0.0.1 然后,重启MySQL服务: CentOS 8: bash sudo systemctl restart mysqld Ubuntu 20.04: bash sudo systemctl restart mysql 最后,确保你的MySQL用户有权限从远程主机访问
例如,如果你想允许用户`myuser`从任何主机访问,可以创建用户时指定`%`作为主机: sql CREATE USER myuser@% IDENTIFIED BY mypassword; GRANT ALL PRIVILEGES ON mydatabase. TO myuser@%; FLUSH PRIVILEGES; 注意: 允许从任何主机访问存在安全风险,建议仅在必要时使用,并通过防火墙和MySQL用户权限严格控制访问
七、备份与恢复 数据库的安全性不仅仅在于配置和权限管理,定期的备份也是至关重要的
MySQL提供了多种备份和恢复方法,其中`mysqldump`是最常用的工具之一
7.1备份数据库 使用`mysqldump`备份数据库: bash mysqldump -u myuser -p mydatabase > mydatabase_backup.sql 7.2 恢复数据库 使用`mysql`命令恢复数据库: bash mysql -u myuser -p mydatabase < mydatabase_backup.sql 八、监控与优化 MySQL的性能监控和优化是保证数据库高效运行的关键
可以使用MySQL自带的性能模式(Performance Schema)、慢查询日志(Slow Query Log)等