Centos7 安装MySQL详细步骤

发布时间 2023-11-20 14:51:21作者: 俟礼

1.1 MySQL安装
1.1.1 下载wget命令

yum -y install wget

1.1.2 在线下载mysql安装包

wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

1.1.3 安装MySQL

rpm -ivh mysql57-community-release-el7-8.noarch.rpm

image

1.1.4 安装mysql服务
首先进入cd /etc/yum.repos.d/目录。

cd /etc/yum.repos.d/

image

安装MySQL服务(这个过程可能有点慢)40分钟

yum -y install mysql-server

image

linux安装MySQL时报错:
image

原因:MySQL GPG 密钥已过期导致

解决办法:执行一下命令,解决

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum -y install mysql-server

1.1.5 启动MySQL

systemctl start mysqld

1.2 修改MySQL临时密码
MySQL安装成功后会有一个临时密码,我们可以使用grep命令查看临时密码先登录进去MySQL,然后修改MySQL密码。

1.2.1 获取MySQL临时密码image

grep 'temporary password' /var/log/mysqld.log

1.2.2 使用临时密码先登录

mysql -uroot -p

我的临时密码是:a22XRJ88=+a;

1.2.3 把MySQL的密码校验强度改为低风险

set global validate_password_policy=LOW;

1.2.4 修改MySQL的密码长度

set global validate_password_length=5;

1.2.5 修改MySQL密码为admin

ALTER USER 'root'@'localhost' IDENTIFIED BY 'admin'; 

下面是在CentOS 7上安装MySQL并设置默认密码的步骤

$ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): [Press Enter]
Set root password? [Y/n]: Y
New password: [Enter new password]
Re-enter new password: [Repeat password]
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y 
Reload privilege tables now? [Y/n]: Y

1.3 允许远程访问
1.3.1 首先要关闭Cenots的防火墙

sudo systemctl disable firewalld

1.3.2 修改MySQL允许任何人连接
1)首先登录MySQL

mysql -uroot -p admin

2)切换到mysql数据

use mysql;

3)查看user表

select Host,User from user;

image

发现root用户只允许localhost主机登录登录

4)修改为允许任何地址访问

update user set Host='%' where User='root';

5)刷新权限

flush privileges;
  1. 将MySQL注册为服务
cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add

mysqld chkconfig mysqld on

service mysqld restart(重启)

service mysqld status (状态)

mysql数据库在Centos7下无法远程连接的原因以及解决详解

有两种原因

数据库没有授权

服务器防火墙没有开放3306端口

一、数据库没有授权

对于mysql数据库没有授权,只需要用一条命令就可以了。

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

//远程连接数据库的时候需要输入用户名和密码

用户名:root

密码:123456

指点ip:%代表所有Ip,此处也可以输入Ip来指定Ip

输入后使修改生效还需要下面的语句

mysql>FLUSH PRIVILEGES;

二、服务器防火墙没有开放3306端口

centos 有两种防火墙 FirewallD和iptables防火墙

centos7 使用的是FirewallD防火墙。

FirewallD 是 iptables 的前端控制器,用于实现持久的网络流量规则。它提供命令行和图形界面,在大多数 Linux 发行版的仓库中都有。与直接控制 iptables 相比,使用 FirewallD 有两个主要区别:

1.FirewallD 使用区域和服务而不是链式规则。

2.它动态管理规则集,允许更新规则而不破坏现有会话和连接。

FirewallD 是 iptables 的一个封装,可以让你更容易地管理 iptables 规则 - 它并不是 iptables 的替代品。虽然 iptables 命令仍可用于 FirewallD,但建议使用 FirewallD 时仅使用 FirewallD 命令。

1.FirewallD防火墙开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

命令含义:

--zone #作用域

--add-port=3306/tcp #添加端口,格式为:端口/通讯协议

--permanent #永久生效,没有此参数重启后失效

重启防火墙

systemctl restart firewalld.service
2.iptables 开发3306端口
/sbin/iptables -I INPUT -p tcp -dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save

可以使用 mysql_secure_installation 命令修改密码