注意:下面的安装步骤是在服务器上没有安装第三方发布的rpm包情况下。centos7可联网。
-----------------------------------------------------------------------------------------------------------
安装mysql5.7
一、添加MySQL Yum 仓库
1、查看内核属于linux哪个版本。打开终端并运行以下命令:
uname -a
2、进入网站查看对应的版本。https://dev.mysql.com/downloads/repo/yum/
3、使用以下命令下载发布包
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
4、安装下载的安装包
sudo rpm -Uvh mysql80-community-release-el7-1.noarch.rpm
二、选择发行系列
1、在MySQL Yum存储库(https://repo.mysql.com/yum)中,不同版本的MySQL Community Server托管在不同的子存储库中。默认情况下,默认启用最新GA系列(当前为MySQL 8.0)的子存储库,而所有其他系列(例如,MySQL 5.7系列)的子存储库均被禁用。使用此命令可查看MySQL Yum存储库中的所有子存储库,并查看已启用或禁用了哪些子存储库(对于启用dnf的系统,请使用dnf替换 命令中的 yum):
sudo yum repolist all | grep mysql
2、要安装最新GA系列的最新版本,无需进行配置。要安装除最新GA系列以外的特定系列的最新版本,请在运行安装命令之前禁用最新GA系列的子存储库并启用特定系列的子存储库。
比如我就想安装mysql5.7,而现在最新是mysql8.0,所以需要禁用8.0的,启用5.7的:
sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community
3、使用此命令再次查看MySQL Yum存储库中的所有子存储库,并查看已启用或禁用了哪些子存储库,发现已切换为mysql5.7启用,mysql8.0已经禁用。
sudo yum repolist all | grep mysql
4、或者通过运行以下命令并检查其输出来验证是否已启用和禁用正确的子存储库
sudo yum repolist enabled | grep mysql
注意:
只为一个发行系列启用子存储库。如果启用了多个发行系列的子存储库,那么Yum将使用最新的系列。
5、更新yum缓存。
yum 会把下载的软件包和header存储在cache中而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令清除缓存。
我们在更新yum源或者出现配置yum源之后,通常都会使用yum makecache 生成缓存,这个命令是将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度。
下边两个命令按顺序执行:
yum clean all
yum makecache fast
三、通过命令安装MySQL。
会自动安装上面设置过可用的最新版本。这将安装MySQL服务器的软件包以及其他必需的软件包。
并且会替换centos7自带的mariadb数据库。
sudo yum install mysql-community-server
经过几次确认,最终安装完成。
这种mysql的安装方式做了下面的事情:
安装了mysql服务
生成SSL证书文件并存放在data目录
安装有效性密码验证插件并启用
本地超级用户root被创建,root用户的密码在日志文件中,使用下面的命令查看密码
四、常用mysql服务命令:
对于基于EL7的平台(CentOS 7):
//启动mysql
$ systemctl start mysqld.service
//查看状态
$ systemctl status mysqld.service
//关闭
$ systemctl stop mysqld.service
//重启
$ systemctl restart mysqld.service
//运行开机自启
$ systemctl enable mysqld.service
//不允许开机自启
$ systemctl disable mysqld.service
此状态为已经正常运行。
五、获取初始密码登录mysql,并修改密码及校验规则
mysql在安装后会创建一个root@locahost账户,并且把初始的密码放到了/var/log/mysqld.log文件中
此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码。
1、通过如下命令可以在日志文件中找出密码:
grep "password" /var/log/mysqld.log
2、使用刚才查到的初始密码登录,密码复杂可以用鼠标复制粘贴。
mysql -uroot -p
3、修改密码(新密码必须是8位及以上的数字、字母、特殊字符)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword1234!';
4、修改密码校验规则,配置可以使用弱密码(不嫌麻烦可以不修改规则,直接用复杂的密码,看个人)
查看当前完整的密码规则,详细如下图中注释:
show variables like 'validate_password%';
以下命令按顺序一条一条执行即可。(改为密码最短3位,其他无限制)
mysql> set global validate_password_policy=0;
mysql> set global validate_password_mixed_case_count=0;
mysql> set global validate_password_number_count=0;
mysql> set global validate_password_special_char_count=0;
mysql> set global validate_password_length=3;
5、可以重新改一下简单密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
-----------------------------------------------------------------------------------------------------------
mysql开启远程访问
远程登录数据库出现下面出错信息
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘xxx.xxx.xxx.xxx’,
原因是没有授予相应的权限
1、执行以下命令开启远程访问限制(下面命令分别是开启IP是 192.168.6.70,以及要开启所有的,用%代替IP):
#任何主机
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
#指定主机
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@’192.168.6.70’ IDENTIFIED BY '123456' WITH GRANT OPTION;
2、然后刷新权限
mysql>flush privileges;
-----------------------------------------------------------------------------------------------------------
mysql修改字符集
1、客户端提供MYSQL的环境,但是不支持中文,通过以下命令可以查看mysql的字符集
mysql>show variables like 'character_set%';
2、编辑配置文件(退出mysql执行)
vim /etc/my.cnf
添加四行代码,位置如图:
[client]
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
3、重启服务(退出mysql命令行,在终端中执行,而非mysql中)
systemctl restart mysqld.service
4、之后进入mysql,查看字符集状态,发现已经为utf-8
-----------------------------------------------------------------------------------------------------------
mysql修改端口
1、修改端口
默认端口为3306,查看端口
mysql>show global variables like 'port';
2、停止mysql服务
systemctl stop mysqld.service
3、编辑配置文件
vim /etc/my.cnf
在【mysqld】下添加端口参数,如图:
port=3336
3、重启服务(退出mysql命令行,在终端中执行,而非mysql中)
systemctl restart mysqld.service
可能出现的问题:
正常的话将端口添加到防火墙例外中就可以远程访问了,如果出现以下错误:
job for sshd.service failed because the control process exited with error code......
应该是 SELinux 搞的鬼,将 SELinux 修改为宽松模式。
打开 vim /etc/selinux/config
修改为宽松模式
若想临时生效可使用
setenforce 0 #关闭
setenforce 1 # 开启
其他问题解决办法:查看mysql日志,查看日志命令如下
cat /var/log/mysqld.log
查看日志中报错的内容。如果是报错码,可以对应查找码的具体含义:https://blog.csdn.net/mr__bai/article/details/113251560
-----------------------------------------------------------------------------------------------------------
centos7 开启防火墙端口
一、开启防火墙端口,CentOS为firewalld添加开放端口3306
1、首先要确保防火墙已开启,开启命令:
systemctl start firewalld
2、开放端口,开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
3、刷新防火墙,立即生效
firewall-cmd --reload
4、查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
二、防火墙相关命令
关闭防火墙
如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估
systemctl stop firewalld.service
查看防火墙状态
systemctl status firewalld
查看监听的端口
netstat -lnpt
检查端口被哪个进程占用
netstat -lnpt |grep 5672
查看进程的详细信息
ps 6832
关闭端口(关闭后需要要重启防火墙才生效)
firewall-cmd --zone=public --remove-port=3338/tcp --permanent
开启防火墙
systemctl start firewalld
停止防火墙
systemctl stop firewalld
重启防火墙
```java
firewall-cmd --reload
开机启动防火墙
systemctl enable firewalld
禁止防火墙开机启动
systemctl disable firewalld
-----------------------------------------------------------------------------------------------------------