准备工作
在开始安装之前,确保系统处于一个干净且已知的状态至关重要,这不仅能避免潜在的冲突,还能为后续的配置打下良好基础。
通过 SSH 登录到您的 CentOS 6 服务器,执行以下命令来更新系统软件包到最新状态(尽管 CentOS 6 的源已归档,但此步骤仍是良好实践):
yum update -y
检查系统是否已经安装了 MySQL 或 MariaDB 的相关组件,CentOS 6 默认可能携带旧版的 MySQL(如 5.1),这需要与我们将要安装的较新版本(如 5.7)进行隔离。
rpm -qa | grep mysql
如果上述命令输出了任何与 mysql
相关的包,mysql-libs
,建议将其卸载,以避免库文件冲突,执行以下命令进行卸载:
yum remove mysql-libs-* -y
至此,系统环境已准备就绪,我们可以进入核心的安装步骤。
安装 MySQL 官方 YUM 源
为了安装较新且受官方支持的 MySQL 版本,最佳方式是添加 MySQL 官方提供的 YUM 仓库,这可以让我们像安装其他系统软件包一样,通过 yum
命令来管理 MySQL。
MySQL 官方为不同的 Linux 发行版提供了仓库安装包,对于 CentOS 6,我们需要下载并安装适用于 EL6 (Enterprise Linux 6) 的发布包。
wget https://dev.mysql.com/get/mysql80-community-release-el6-3.noarch.rpm
(注意:MySQL 官方已停止对 CentOS 6 的更新,该链接可能失效,在真实环境中,可能需要寻找归档的 RPM 包或使用第三方源,如 Remi,此处以官方流程为例进行说明。)
下载完成后,使用 yum localinstall
来安装这个 RPM 包,它会自动向系统的 /etc/yum.repos.d/
目录中添加 MySQL 的仓库配置文件。
yum localinstall mysql80-community-release-el6-3.noarch.rpm -y
安装成功后,您会看到两个新的仓库文件:mysql-community.repo
和 mysql-community-source.repo
。
选择并安装 MySQL 版本
MySQL 的 YUM 仓库默认启用最新的 MySQL 8.0 版本,CentOS 6 的系统环境和工具链(如 glibc
版本)通常无法兼容 MySQL 8.0,一个稳妥且常见的选择是安装 MySQL 5.7,它在功能、性能和兼容性上取得了很好的平衡。
我们需要编辑仓库配置文件来禁用 8.0 并启用 5.7。
vi /etc/yum.repos.d/mysql-community.repo
在打开的文件中,找到 [mysql80-community]
部分,将其中的 enabled=1
修改为 enabled=0
,然后找到 [mysql57-community]
部分,将其中的 enabled=0
修改为 enabled=1
,修改后的片段应如下所示:
[mysql80-community] name=MySQL 8.0 Community Server baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
保存并退出编辑器,系统在执行 yum install mysql-server
时,将会默认选择安装 MySQL 5.7 版本。
执行安装命令:
yum install mysql-community-server -y
这个过程会下载并安装 MySQL 服务器端、客户端以及所有必要的依赖包,请耐心等待其完成。
启动与安全配置
安装完成后,MySQL 服务并不会自动启动,我们需要手动启动它,并设置为开机自启。
service mysqld start chkconfig mysqld on
在 MySQL 5.7 中,首次启动时会为 root
用户生成一个临时密码,并记录在错误日志文件中,我们可以通过以下命令查看:
grep 'temporary password' /var/log/mysqld.log
命令输出会包含一串类似 A temporary password is generated for root@localhost: .-t)Jr7>g3kq
的信息,记下这个密码。
运行 MySQL 提供的安全配置脚本,这是安装后必须执行的步骤,它能极大地提升数据库的安全性。
mysql_secure_installation
脚本会引导你完成一系列操作:
- 输入之前查看到的临时密码。
- 设置新的
root
用户密码(新密码需要包含大小写字母、数字和特殊符号)。 - 移除匿名用户。
- 禁止
root
用户远程登录(建议选择 Yes)。 - 移除
test
数据库。 - 重新加载权限表,使更改生效。
全部按照推荐选择 Yes 即可。
配置完成后,你就可以使用新密码登录 MySQL 了:
mysql -u root -p
输入密码,成功进入 MySQL 命令行界面,即代表安装圆满成功。
常用命令与配置文件
为了便于日常管理,以下列出了在 CentOS 6 中管理 MySQL 服务常用的命令和核心配置文件路径。
操作类别 | 命令 / 路径 | 描述 |
---|---|---|
服务管理 | service mysqld start | 启动 MySQL 服务 |
service mysqld stop | 停止 MySQL 服务 | |
service mysqld restart | 重启 MySQL 服务 | |
service mysqld status | 查看 MySQL 服务状态 | |
chkconfig mysqld on | 设置 MySQL 开机自启 | |
核心配置 | /etc/my.cnf | MySQL 主配置文件 |
日志文件 | /var/log/mysqld.log | MySQL 错误和启动日志 |
数据目录 | /var/lib/mysql/ | MySQL 数据库文件存储目录 |
相关问答FAQs
如果忘记了 MySQL 的 root 密码,该如何重置?
解答: 重置 root 密码需要以特殊模式启动 MySQL,步骤如下:
- 停止 MySQL 服务:
service mysqld stop
- 使用
--skip-grant-tables
选项启动 MySQL,此模式会跳过权限验证:mysqld_safe --skip-grant-tables &
- 无密码登录 MySQL:
mysql -u root
- 切换到
mysql
系统数据库并更新user
表:USE mysql; UPDATE user SET authentication_string=PASSWORD('YourNewPassword') WHERE User='root'; FLUSH PRIVILEGES; QUIT;
(注意:在 MySQL 5.7 中,密码字段是
authentication_string
,而非旧版的password
。) - 杀死所有 MySQL 进程,然后正常启动服务:
pkill mysqld service mysqld start
- 现在即可使用新密码
YourNewPassword
登录。
如何允许其他服务器远程连接到此 MySQL 服务器?
解答: 默认情况下,MySQL 只允许本地连接,要开启远程访问,需要两个步骤:
- 授权 MySQL 用户: 登录 MySQL,为特定用户或一个新用户授予从特定 IP(或任意 IP)访问的权限,授权
root
用户从任何 IP () 访问:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'YourPassword' WITH GRANT OPTION; FLUSH PRIVILEGES;
出于安全考虑,建议将 替换为具体的客户端 IP 地址,而不是开放给所有 IP。
- 配置防火墙: CentOS 6 默认使用
iptables
作为防火墙,需要开放 MySQL 的默认端口 3306,编辑防火墙规则:vi /etc/sysconfig/iptables
在
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
这一行下方,添加:-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存后,重启
iptables
使规则生效:service iptables restart
完成以上两步后,远程客户端就可以通过
mysql -h <server_ip> -u root -p
连接到数据库了。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复