云服务器安装mysql

记录一次腾讯云服务器安装Mysql遇到的坑

安装mysql

检测一下系统中是否已安装mysql的相关服务,无输出则表明未安装。

1
rpm -qa | grep mysql

安装从网上下载文件的wget命令

1
yum -y install wget

下载mysql的repo源

1
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

安装mysql-community-release-el7-5.noarch.rpm包

1
rpm -ivh mysql-community-release-el7-5.noarch.rpm

安装mysql

1
yum install mysql-server

查看mysql状态

1
service mysqld status 或者 # service mysql status

查看mysql安装目录

1
ps -ef|grep mysql

数据库设置

启动数据库

1
service mysqld start

连接数据库

1
mysql -u root -p , 回车后输入密码

或者使用绕过密码进行强制登陆

1
mysqld_safe--user=mysql --skip-grant-tables--skip-networking &

首选选择数据库

1
mysql>use mysql;

修改密码

1
mysql> update user set password=password("新密码") where user='root';

查看用户

1
2
select host,user from user;
MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost只能本机访问;

设置host为%

1
2
update user set host='%' where user = 'root';
%为任意用户都有权限连接,localhost为只能本机连接,配置完host为%这一步就已经能外网访问了

授权用户具体权限

1
2
3
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

不推荐授权所有IP, GRANT ALL PRIVILEGES ON *.* TO ‘root’@’xxx.xxx.xxx.xxx’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;这种操作最好不要做。这相当于是给IP-xxx.xxx.xxx.xxx赋予了所有的权限,当然也包括远程访问权限。

刷新权限

1
flush privileges;

查看3306端口状态

1
netstat -an | grep 3306

设置mysql的配置文件

1
2
3
/etc/mysql/my.cnf 找到 bind-address  =127.0.0.1  将其注释掉;

也可以改成bind-address =0.0.0.0

重启mysql

1
/etc/init.d/mysql restart;

这里可能有个免密登陆的坑
登陆mysql,输入sql

1
SHOW VARIABLES LIKE ‘skip_networking’;

如果skip-networking是on,需要关闭掉。
然后使用

1
mysqld_safe --user=mysql &

重启服务

防火墙

关闭firewall:

1
2
3
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld.service

安装iptables防火墙

1
yum install iptables-services -y

设置开机启动防火墙

1
2
systemctl enable iptables
systemctl start iptables

查看防火墙状态

1
systemctl status iptables

编辑防火墙,增加端口

1
2
3
4
vi /etc/sysconfig/iptables #编辑防火墙配置文件 将3306端口开放
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
1
:wq! #保存退出

重启配置,重启系统

1
2
systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动

按照上述操作后,防火墙配置并没有生效,这里也是花时间最久的地方。
直到按照下面的方式处理:

CentOS7默认的防火墙不是iptables,而是firewalle.

安装iptable iptable-service

1
2
3
4
5
6
7
8
#先检查是否安装了iptables
service iptables status
#安装iptables
yum install -y iptables
#升级iptables
yum update iptables
#安装iptables-services
yum install iptables-services

禁用/停止自带的firewalld服务

1
2
3
4
#停止firewalld服务
systemctl stop firewalld
#禁用firewalld服务
systemctl mask firewalld

设置现有规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP

其他规则设定

1
2
3
4
5
6
7
8
#如果要添加内网ip信任(接受其所有TCP请求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令:
iptables -I INPUT -s ***.***.***.*** -j DROP
#要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP

解决vsftpd在iptables开启后,无法使用被动模式的问题

1.首先在/etc/sysconfig/iptables-config中修改或者添加以下内容

1
2
3
#添加以下内容,注意顺序不能调换
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"

2.重新设置iptables设置

1
iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT

以下为完整设置脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh
iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
service iptables save
systemctl restart iptables.service

安全组

按照步骤配置即可
avatar