在 CentOS 中安装 MySQL(无坑版)
1. 下载安装 MySQL yum 仓库
请按照自己的系统版本选择自己喜欢的 MySQL版本
uname -a
或者
lsb_release -a
MySQL yum 仓库地址:
https://repo.mysql.com/
CentOS 8
wget https://repo.mysql.com/mysql80-community-release-el8-1.noarch.rpm
yum localinstall mysql80-community-release-el8-1.noarch.rpm
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:
yum install mysql-community-server -y
3. 启动 MySQL 服务
使用以下命令启动 mysql 服务:
CentOS 8 或 CentOS 7
systemctl start mysql
4. 显示 root 用户的默认密码
安装 MySQL 8.0 时,会自动为 root 用户生成一个临时密码,并记录在日志文件里。请使用以下命令查看 root 用户的临时密码:
grep "A temporary password" /var/log/mysqld.log
这是输出:
[Note] A temporary password is generated for root@localhost: **************
重要!!!本地的临时密码是不同的。要根据此密码来更改 root 用户的密码。
5. MySQL 安全配置
执行以下 mysql_secure_installation 命令来保护 MySQL 服务器:
mysql_secure_installation
它会提示您输入 root 帐户的当前密码:
Enter password for user root:
输入上面的临时密码,然后按下回车键。将显示以下消息:
The existing password for the user account root has expired. Please set a new password.
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
查看 MySQL 服务器状态: systemctl status mysqld
启动 MySQL 服务器: systemctl start mysqld
停止 MySQL 服务器: systemctl stop mysqld
重启 MySQL 服务器: systemctl restart mysqld
配置 MySQL 服务器自启动: systemctl enable mysqld
7. 连接到 MySQL 服务
使用以下命令连接到 MySQL 服务器:
mysql -u root -p
然后根据提示输入 root 帐户的密码,并按 Enter 键。验证通过后,将显示以下输出,表示已经进入了 MySQL 的控制台:
mysql>
使用 SHOW DATABASES
显示当前服务器中的所有数据库:
mysql> show databases;
输出:
+--------------------+
| 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换成你的实际主机地址。
[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用户名不能远程登录,按照以下步骤设置远程访问权限。
连接数据库
[root@localhost ~]# mysql -uroot -pcharles
选择mysql数据库
mysql> use mysql
设置访问权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
其中"*.*"代表所有资源所有权限, “‘root’@%”其中root代表账户名,%代表所有的访问地址。IDENTIFIED BY ‘密码’,换成数据库root用户的密码,WITH GRANT OPTION表示允许级联授权。
刷新访问权限表
mysql> FLUSH PRIVILEGES;
查看用户表验证是否添加成功
查询结果出现最后一行表示添加权限成功
mysql> SELECT User, Password, Host FROM user;
MySQL5.7以上使用这个!!!!!
select User,authentication_string,Host from mysql.user;
验证远程登录
执行如下语句,如果能成功连接上就证明远程登录可用。
[root@localhost ~]# mysql -uroot -p 密码 -h 192.168.0.118