在 CentOS 中安装 MySQL(无坑版)

1. 下载安装 MySQL yum 仓库

请按照自己的系统版本选择自己喜欢的 MySQL版本

javascript 复制代码
uname -a
或者
lsb_release -a

MySQL yum 仓库地址:

https://repo.mysql.com/

javascript 复制代码
CentOS 8
wget https://repo.mysql.com/mysql80-community-release-el8-1.noarch.rpm 
yum localinstall mysql80-community-release-el8-1.noarch.rpm

javascript 复制代码
CentOS 7
wget https://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm 
yum localinstall mysql80-community-release-el7-1.noarch.rpm

2. 安装 MySQL 8 社区服务器

执行以下命令安装 MySQL 8:

javascript 复制代码
yum install mysql-community-server -y

3. 启动 MySQL 服务

使用以下命令启动 mysql 服务:

CentOS 8 或 CentOS 7

javascript 复制代码
systemctl start mysql

4. 显示 root 用户的默认密码

安装 MySQL 8.0 时,会自动为 root 用户生成一个临时密码,并记录在日志文件里。请使用以下命令查看 root 用户的临时密码:

javascript 复制代码
grep "A temporary password" /var/log/mysqld.log

这是输出:

Note A temporary password is generated for root@localhost: **************

重要!!!本地的临时密码是不同的。要根据此密码来更改 root 用户的密码。

5. MySQL 安全配置

执行以下 mysql_secure_installation 命令来保护 MySQL 服务器:

javascript 复制代码
mysql_secure_installation

它会提示您输入 root 帐户的当前密码:

javascript 复制代码
Enter password for user root:

输入上面的临时密码,然后按下回车键。将显示以下消息:

The existing password for the user account root has expired. Please set a new password.

javascript 复制代码
New password:
Re-enter new password:

输入 root 用户的新密码和确认密码,不要告诉别人哦!!!

配置过程中它会提示配置一些安全选项,为了服务器的安全,应该选择 y。这些问题包括:

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

删除匿名用户?(按 y|Y 表示是,任何其他键表示否):y

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

禁止远程 root 登录?(按 y|Y 表示是,任何其他键表示否):y

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

删除测试数据库并访问它?(按 y|Y 表示是,任何其他键表示否):y

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

现在重新加载权限表?(按 y|Y 表示是,任何其他键表示否):y

6. MySQL 服务控制命令

安装完成后,MySQL 服务就会自动启动。我们可以通过以下几个命令查看 MySQL 服务的状态,启动、停止、重启 MySQL 服务器:

CentOS 8

javascript 复制代码
查看 MySQL 服务器状态: systemctl status mysqld
启动 MySQL 服务器: systemctl start mysqld
停止 MySQL 服务器: systemctl stop mysqld
重启 MySQL 服务器: systemctl restart mysqld
配置 MySQL 服务器自启动: systemctl enable mysqld

7. 连接到 MySQL 服务

使用以下命令连接到 MySQL 服务器:

javascript 复制代码
mysql -u root -p

然后根据提示输入 root 帐户的密码,并按 Enter 键。验证通过后,将显示以下输出,表示已经进入了 MySQL 的控制台:

javascript 复制代码
mysql>

使用 SHOW DATABASES 显示当前服务器中的所有数据库:

javascript 复制代码
mysql> show databases;

输出:

javascript 复制代码
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.05 sec)

上面显示的数据库,是 MySQL 服务器自带数据库。

8.远程连接

验证root用户是否允许远程登录

例如你的host主机IP是192.168.0.118,用如下命令在Linux主机上验证是否可以远程登录;

注意把密码换成你的MySQL数据库的实际root密码,IP换成你的实际主机地址。

javascript 复制代码
[root@localhost ~]# mysql -uroot -p 密码 -h 192.168.0.118

Warning: Using a password on the command line interface can be insecure.

ERROR 1130 (HY000): Host '192.168.170.128' is not allowed to connect to this MySQL server

报以上错误表示root用户名不能远程登录,按照以下步骤设置远程访问权限。

连接数据库

javascript 复制代码
[root@localhost ~]# mysql -uroot -pcharles

选择mysql数据库

javascript 复制代码
mysql> use mysql

设置访问权限

javascript 复制代码
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

其中"*.*"代表所有资源所有权限, "'root'@%"其中root代表账户名,%代表所有的访问地址。IDENTIFIED BY '密码',换成数据库root用户的密码,WITH GRANT OPTION表示允许级联授权。

刷新访问权限表

javascript 复制代码
mysql> FLUSH PRIVILEGES;

查看用户表验证是否添加成功

查询结果出现最后一行表示添加权限成功

javascript 复制代码
mysql> SELECT User, Password, Host FROM user;
javascript 复制代码
MySQL5.7以上使用这个!!!!!
select User,authentication_string,Host from mysql.user;

验证远程登录

执行如下语句,如果能成功连接上就证明远程登录可用。

javascript 复制代码
[root@localhost ~]# mysql -uroot -p 密码 -h 192.168.0.118

相关推荐
码域空间3 小时前
锁住了检查,锁不住延迟——MySQL 读写分离架构下双重检查模式失效实录
数据库·mysql·架构
数据库小学妹5 小时前
MySQL 8.4还是9.7 LTS?8.0 EOL后升级怎么选
数据库·mysql·dba·版本升级·数据库运维
m0_547486665 小时前
《数据库原理及应用教程MySQL 8.0》全套PPT课件2026
数据库·mysql
程序员夏洛5 小时前
MySQL 中的事务隔离级别有哪些?
数据库·mysql
冰暮流星5 小时前
mysql之字符串函数
数据库·mysql
梦想不只是梦与想7 小时前
MySQL 不同操作系统的安装方式
数据库·mysql·mysql安装
码农颜7 小时前
6.4.1 监听连接
java·数据库·mysql
菀亓1 天前
ubuntu系统mysql安装
mysql
程序员贺加贝1 天前
别被 saveBatch 骗了:一次 MyBatis-Plus 批量插入性能排查
mysql
l1258651 天前
# RAG上线评估指标体系:六大核心指标与压测实战全解析
数据库·人工智能·python·mysql·langchain·milvus