目录
查看是否已经安装
检查系统软件包
卸载软件包
安装
检查是否成功安装
安装mysql服务
查看配置⽂件和数据存储位置
启动服务
设置开机启动[可以不设]
常⻅问题
解决 GPG 密钥过期问题
解决方案:
常⻅问题
解决 GPG 密钥过期问题
配置登录
登录方法一:使用临时密码登录
登录方法二:直接尝试登录
登录方法三:绕过密码登录
总结
查看是否已经安装
ps axj | grep mysql
这个命令是列出所有正在运行的进程(ps axj
),然后通过管道 (|
) 将输出传递给 grep mysql
,这样就只显示包含 mysql
关键字的行。
输出结果:
1 1707 1706 1706 ? -1 Sl 27 35:40 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid8707 9603 9602 8707 pts/0 9602 S+ 1003 0:00 grep --color=auto mysql
这里列出了两个进程:
- 第一行表示 MySQL 数据库服务正在运行,其进程 ID (PID) 是 1707。该进程是由 PID 为 1706 的进程启动的,MySQL 服务使用的是
/usr/sbin/mysqld
这个可执行文件,并且指定了--daemonize
和--pid-file
参数来以守护进程的方式运行,并将 PID 写入/var/run/mysqld/mysqld.pid
文件。 - 第二行表示的是
grep
命令本身的进程信息,它是由 PID 为 9602 的进程启动的,并且是在终端pts/0
上运行的。
ps ajx | grep mariadb
这个命令也是用来列出所有进程(ps ajx
),然后通过 grep mariadb
过滤出与 mariadb
相关的信息。
输出结果:
8707 11699 11698 8707 pts/0 11698 S+ 1003 0:00 grep --color=auto mariadb
这里只有一条记录,实际上就是 grep mariadb
命令自身的进程信息,说明没有找到任何与 mariadb
相关的进程在运行。
如果你的云服务器已经预装了 MySQL 或 MariaDB,并且这些数据库服务已经被正确配置并启动,那么你可以直接使用它们来存储和管理数据,无需再次安装数据库软件。但是,为了确保一切正常工作,你需要确认以下几点:
-
服务状态:确保 MySQL 或 MariaDB 服务正在运行。你可以通过
service mysql status
或systemctl status mysqld
(对于 MySQL)以及service mariadb status
或systemctl status mariadb
(对于 MariaDB)来检查服务的状态。 -
安全性:新安装或预装的数据库可能需要一些安全配置,例如设置 root 用户密码、删除测试用户等。你可以通过运行
mysql_secure_installation
脚本来增强 MySQL 的安全性。 -
配置文件:检查数据库的配置文件(通常是 MySQL 的
/etc/mysql/my.cnf
或 MariaDB 的/etc/my.cnf
),以确保配置适合你的应用需求。 -
客户端工具:你需要安装 MySQL 或 MariaDB 的客户端工具,以便能够连接到数据库并执行 SQL 命令。通常情况下,这些工具会随服务器端一起安装,或者可以通过包管理器单独安装。
-
防火墙设置:确保服务器的防火墙规则允许必要的端口(默认 MySQL 和 MariaDB 使用 3306 端口)对外界开放,以便其他应用程序或客户端可以访问数据库。
-
备份与恢复:规划好数据库的备份策略,确保数据的安全性。
如果你发现服务器上并没有预装这些数据库服务,或者需要更高级的功能,那么就需要自行安装和配置 MySQL 或 MariaDB。这通常可以通过云提供商的控制面板或通过 SSH 登录服务器后使用包管理工具(如 yum, apt-get 等)来完成。
检查系统软件包
这个命令非常有用,特别是在你需要知道系统中安装了哪些与 MySQL 相关的软件包时。例如,当你准备卸载 MySQL 或者排查某个与 MySQL 相关的问题时,这个命令可以帮助你快速定位相关的软件包。
-
rpm -qa
: 这个命令用于列出系统中所有已安装的 RPM 软件包。-qa
中的-q
指的是查询(query),a
表示所有(all),因此-qa
表示查询所有已安装的软件包。 -
|
: 这是一个管道符号,用于将一个命令的输出作为另一个命令的输入。在这个例子中,rpm -qa
命令的输出会被传递给grep mysql
命令进行进一步处理。 -
grep mysql
: 这个命令用于从输入流中搜索包含 "mysql" 字样的行。grep
是一个强大的文本搜索工具,它可以用来在文件中搜索固定字符串或正则表达式模式。在这个场景下,grep mysql
会筛选出包含 "mysql" 的行。
卸载软件包
rpm -qa | grep mysql | xargs - f yum remove 卸载
你提供的命令是用来卸载系统中已安装的 MySQL 相关软件包的。下面是对这条命令的详细解释:
-
rpm -qa
: 这条命令会列出系统中所有已安装的 RPM 包(RPM Package Manager,红帽软件包管理器)。-qa
表示查询所有已安装的包(query all)。 -
| grep mysql
: 通过管道符 (|
),将前面命令的输出传递给grep
命令,grep mysql
用于筛选出包含 "mysql" 字样的行。这意味着这条命令会找出所有名称中包含 "mysql" 的已安装包。 -
xargs -f yum remove
:xargs
命令用于读取标准输入中的每一行,并将其作为参数传递给指定的命令(在这里是yum remove
)。-f
选项表示强制(force),即使输入中有空行也会继续处理。yum remove
: 这是用于移除软件包的命令。yum
是 Yellowdog Updater Modified 的缩写,是一个基于 RPM 的软件包管理工具,主要用于安装、更新和移除软件包。
整个命令链的作用是找出所有名称包含 "mysql" 的已安装包,并尝试移除它们。请注意,这条命令会移除所有匹配的包,所以在执行前最好先确认一下要移除的包是否确实是不需要的,避免误删重要的系统组件。
如果你想要查看将会移除哪些包,但不实际执行移除操作,可以在最后加上 -n
选项来模拟命令执行而不真正执行:
rpm -qa | grep mysql | xargs -f yum remove -n
这将显示出 yum remove
命令将会尝试移除的软件包列表,但不会真正执行移除操作。这样可以让你确认即将移除的软件包是否正确。
另外,请确保在执行此类操作前备份重要数据,并且以具有足够权限的用户身份执行此命令,通常需要 root 权限。在 CentOS/RHEL 系统中,你可能需要使用 sudo
命令来获取必要的权限。
通过检查 /etc/my.cnf
文件是否存在来判断 MySQL 是否已被完全卸载。然而,需要注意的是,/etc/my.cnf
只是 MySQL 的主要配置文件之一,它的存在与否并不一定完全代表 MySQL 是否彻底卸载。此外,即使 rpm
包管理工具成功地卸载了 MySQL 的所有相关软件包,也可能留下一些配置文件或数据文件。
配置文件
/etc/my.cnf
:这是 MySQL 的主配置文件。如果 MySQL 被卸载,这个文件可能会被保留下来,除非你在卸载过程中特别指定了删除配置文件的选项。/etc/mysql/my.cnf
:有时 MySQL 的配置文件可能会位于这个目录下。/etc/mysql/mysql.conf.d/
:这个目录下可能存放了一些额外的配置文件。
数据目录
/var/lib/mysql
:这是 MySQL 默认的数据存储目录。即使你卸载了 MySQL,这个目录通常不会被自动删除,因为其中包含了所有的数据库文件,这些文件通常是用户希望保留的。
日志文件
/var/log/mysqld.log
:这是 MySQL 的日志文件。卸载过程通常不会删除这个文件。
安装
-
获取MySQL官方YUM源:
- MySQL官方网站http://repo.mysql.com/)提供了适用于不同Linux发行版的软件包。对于CentOS,可以找到对应版本的RPM包,例如`mysql57-community-release-el7-10.noarch.rpm`,这个文件就是MySQL的YUM仓库源。
-
检查系统版本:
- 在安装任何软件之前,了解你的系统版本是非常重要的,因为不同的系统版本可能需要不同版本的软件包。通过命令
cat /etc/redhat-release
可以查看CentOS系统的版本信息。
- 在安装任何软件之前,了解你的系统版本是非常重要的,因为不同的系统版本可能需要不同版本的软件包。通过命令
-
安装前的准备:
- 首先,你需要下载适合你系统的MySQL YUM源包,并将其上传到你的Linux服务器上。
- 之后,你可以查看当前的YUM源配置文件目录
/etc/yum.repos.d/
来确认是否已经有MySQL的相关YUM源配置文件。
-
安装MySQL YUM源:
- 使用
rpm -Uvh <package>
命令来安装YUM源包,其中<package>
是之前下载并上传的RPM包的路径。这里使用了mysql57-community-release-el7-10.noarch.rpm
作为例子。 - 如果你在执行此命令时遇到权限问题,可以通过使用
sudo
命令或者切换到root用户来进行安装。
- 使用
-
安装后的验证:
成功安装MySQL YUM源后,你可以再次查看/etc/yum.repos.d/
目录,会发现多出了两个新的配置文件:mysql-community.repo
和mysql-community-source.repo
。这两个文件定义了如何从MySQL的官方仓库下载软件包。
检查是否成功安装
yum list | grep mysql
安装mysql服务
sudo yum install -y mysql-community-server
查看配置⽂件和数据存储位置
[@VM-0-3-centos 9.9]$ ls /etc/my.cnf
/etc/my.cnf
[@VM-0-3-centos 9.9]$ sudo ls /var/lib/mysql
启动服务
[@VM-0-3-centos 9.9]$ systemctl start mysqld.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
查看启动服务
[@VM-0-3-centos 9.9]$ ps axj |grep mysqld
1 23183 23182 23182 ? -1 Sl 27 0:00 /usr/sbin/mysqld --
daemonize --pid-file=/var/run/mysqld/mysqld.pid
13134 23243 23242 13134 pts/0 23242 S+ 1005 0:00 grep --color=auto
mysqld
设置开机启动[可以不设]
常⻅问题
解决 GPG 密钥过期问题
你在安装 MySQL 客户端时遇到了 GPG 密钥过期的问题,这是因为系统试图验证下载的软件包签名,但发现密钥无效或已过期。解决这个问题的方法是导入最新的 GPG 密钥。
解决方案:
-
下载并导入新的 GPG 密钥:你可以从 MySQL 官方网站下载最新的 GPG 密钥并导入到系统中。根据你的描述,解决方案如下:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
-
验证密钥:确保密钥已经成功导入:
rpm --import --printpkgs
-
重新安装 MySQL 客户端:重新尝试安装 MySQL 客户端,这次应该不会再有 GPG 密钥过期的问题:
sudo yum install -y mysql-community-client
常⻅问题
解决 GPG 密钥过期问题
你在安装 MySQL 客户端时遇到了 GPG 密钥过期的问题,这是因为系统试图验证下载的软件包签名,但发现密钥无效或已过期。解决这个问题的方法是导入最新的 GPG 密钥。
解决方案:
-
下载并导入新的 GPG 密钥:你可以从 MySQL 官方网站下载最新的 GPG 密钥并导入到系统中。根据你的描述,解决方案如下:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
-
验证密钥:确保密钥已经成功导入:
rpm --import --printpkgs
-
重新安装 MySQL 客户端:重新尝试安装 MySQL 客户端,这次应该不会再有 GPG 密钥过期的问题:
sudo yum install -y mysql-community-client
配置登录
登录方法一:使用临时密码登录
-
获取临时密码:
sudo grep 'temporary password' /var/log/mysqld.log
这条命令会查找 MySQL 启动日志文件
/var/log/mysqld.log
中包含 “temporary password” 的行,从而找到临时密码。 -
使用临时密码登录 MySQL:
mysql -uroot -p
输入临时密码完成登录。
-
调整密码策略:
- 关闭密码复杂度验证:
set global validate_password_policy=0;
- 设置密码最小长度为 1:
set global validate_password_length=1;
- 关闭密码复杂度验证:
-
修改 root 用户密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'qwer@wu.888';
这里将 root 用户的密码修改为
qwer@wu.888
。 -
刷新权限:
FLUSH PRIVILEGES;
登录方法二:直接尝试登录
对于某些最新版本的 MySQL,root 用户可能默认没有设置密码。你可以尝试直接登录:
mysql -uroot
登录方法三:绕过密码登录
如果上述方法都无法登录,可以暂时禁用密码验证:
-
编辑 MySQL 配置文件:
vim /etc/my.cnf
在
[mysqld]
部分末尾添加:skip-grant-tables
-
重启 MySQL 服务:
systemctl restart mysqld
-
无需密码登录:
mysql -uroot
-
修改 root 用户密码: 登录后,你可以修改 root 用户的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'qwer@wu.888'; FLUSH PRIVILEGES;
-
恢复密码验证: 修改完密码后,需要恢复正常的密码验证机制。编辑配置文件,移除
skip-grant-tables
行:vim /etc/my.cnf
删除或注释掉:
#skip-grant-tables
-
再次重启 MySQL 服务:
systemctl restart mysqld
总结
- 使用临时密码登录是最常见的方法之一,适用于首次安装 MySQL 时。
- 如果 MySQL 版本较新,root 用户可能没有初始密码,可以直接尝试登录。
- 如果以上两种方法都无法登录,可以通过临时禁用密码验证来登录 MySQL,修改密码后再恢复正常的验证机制。