在 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

相关推荐
张某布响丸辣28 分钟前
SQL关键字的优先级执行顺序:深入理解SQL查询的构造
java·sql·mysql·面试
cocosum36 分钟前
Centos 7 搭建Samba
linux·运维·服务器·centos
万笑佛1 小时前
mysql后台导入sql文件-设定字符集
mysql
沐风ya2 小时前
mysql索引 -- 全文索引介绍(如何创建,使用),explain关键字
数据库·mysql
帆船3 小时前
SQL注入
mysql
Passion不晚3 小时前
【面试题】mysql中怎么保持主从数据库一致
数据库·mysql·面试
Python私教3 小时前
macOS安装MySQL以后如何配置环境变量
数据库·mysql·macos
wrx繁星点点4 小时前
Java 事务隔离级别及相关概念
java·开发语言·数据库·mysql
百成Java4 小时前
基于springboot的旅游网站
java·spring boot·后端·mysql·spring·智能家居·旅游
为java添砖加瓦5 小时前
【读写分离?聊聊Mysql多数据源实现读写分离的几种方案】
java·数据库·spring boot·后端·mysql·spring·mybatis