在 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

相关推荐
.Shu.1 小时前
Mysql InnoDB 底层架构设计、功能、原理、源码系列合集【五、InnoDB 高阶机制与实战调优】
数据库·mysql
新法国菜3 小时前
MySql知识梳理之DDL语句
数据库·mysql
刘一说4 小时前
CentOS安装Maven详细教程
linux·centos·maven
大只鹅5 小时前
Centos7.9 Docker26容器化部署 MySql9.4 一主一从的同步复制部署
mysql·centos
叁沐6 小时前
MySQL 28 读写分离有哪些坑?
mysql
DarkAthena6 小时前
【GaussDB】使用MySQL客户端连接到GaussDB的M-Compatibility数据库
数据库·mysql·gaussdb
帧栈15 小时前
开发避坑指南(29):微信昵称特殊字符存储异常修复方案
java·mysql
瓜酷月..16 小时前
MySQL的高可用+MHA
数据库·mysql
差不多的张三16 小时前
【解决方案】powershell自动连接夜神adb端口
数据库·adb
苹果醋320 小时前
Java并发编程-Java内存模型(JMM)
java·运维·spring boot·mysql·nginx