💻前言
为了简化安装和配置过程,许多Linux发行版提供了预编译的二进制MySQL安装包,这些安装包已经经过测试和验证,可以在大多数Linux系统上正常工作。通过安装这些二进制MySQL安装包,可以省去从源代码编译和安装的繁琐过程,提高安装和配置的效率。
此外,二进制MySQL安装包也包含了一些预配置的参数和选项,这些参数和选项已经经过优化和调整,可以满足大多数用户的需求。如果需要更高级的配置或定制化的选项,可以使用源代码进行编译和安装。
💻下载Linux版Mysql
下载步骤:
通过Xftp上传到Linux:
💻解压
1.我的Linux是桥接,通过Xshell连接我的另一台电脑。
2.执行压缩命令
tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar -C /usr/local
该命令用于解压缩名为mysql-8.0.33-linux-glibc2.12-x86_64.tar的压缩文件,并将其解压缩到/usr/local目录下。-x选项表示解压缩,-v选项表示在解压缩时显示详细信息,-f选项指定要解压缩的文件名,-C选项指定解压缩后的目标目录。
3.重命名
进入解压目录对mysql-8.0.33-linux-glibc2.12-x86_64重命名为 mysql
-
[root@xiaojian ~]# cd
/usr
/local
-
[root@xiaojian local]# ll
-
total
0
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 bin
-
drwxr-xr-x.
2 root root
6 Jul
25
15:
29 etc
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 games
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 include
-
drwxr-xr-x.
8
10
143
255 Mar
29
2018 jdk
1.8.0_
171
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 lib
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 lib
64
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 libexec
-
drwxr-xr-x
9 root root
129 Jul
26
10:
53 mysql-
8.0.33-linux-glibc
2.12-x
86_
64
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 sbin
-
drwxr-xr-x.
5 root root
49 Jul
11
09:
19 share
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 src
-
drwxr-xr-x.
9 root root
220 Jul
25
14:
54 tomcat-
8.5.91
-
[root@xiaojian local]# mv mysql-
8.0.33-linux-glibc
2.12-x
86_
64 mysql
-
[root@xiaojian local]# ll
-
total
0
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 bin
-
drwxr-xr-x.
2 root root
6 Jul
25
15:
29 etc
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 games
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 include
-
drwxr-xr-x.
8
10
143
255 Mar
29
2018 jdk
1.8.0_
171
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 lib
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 lib
64
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 libexec
-
drwxr-xr-x
9 root root
129 Jul
26
10:
53 mysql
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 sbin
-
drwxr-xr-x.
5 root root
49 Jul
11
09:
19 share
-
drwxr-xr-x.
2 root root
6 Apr
11
2018 src
-
drwxr-xr-x.
9 root root
220 Jul
25
14:
54 tomcat-
8.5.91
-
[root@xiaojian local]#
💻添加用户/组
#进入到安装目录 [root@xiaojian local]# cd /usr/local/mysql/ #创建组 [root@xiaojian mysql]# groupadd mysql #创建用户 [root@xiaojian mysql]# useradd -r -g mysql mysql #设置/usr/local/mysql/文件夹的拥有者 [root@xiaojian mysql]# chown -R mysql:mysql ./
💻初始化Mysql生成默认随机密码
#创建数据库文件存放的文件夹。这个文件夹将来存放每个数据库的库文件 [root@xiaojian mysql]# mkdir data #执行命令, [root@xiaojian mysql]# bin/mysqld --initialize --user=mysql --lower_case_table_names=1 --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ #参数说明 #--initialize:初始化MySQL服务器,包括创建数据目录和初始化系统数据库等操作。 #--user=mysql:指定运行MySQL服务器的用户,这里为mysql用户。 #--lower_case_table_names=1:将数据库和表名转换为小写,方便在不同操作系统间迁移。 #--basedir=/usr/local/mysql:指定MySQL服务器的安装路径。 #--datadir=/usr/local/mysql/data:指定MySQL服务器的数据目录。 #注意:有些centos版本缺少libaio.so.1文件,就会执行不成功,使用yum install -y libaio安装 #设置数据库存储文件夹拥有者 [root@xiaojian mysql]# chown -R root:root ./ [root@xiaojian mysql]# chown -R mysql:mysql data
记住这个随机生成的密码(登录Mysql必须)
💻修改配置
修改Mysql配置文件
[root@xiaojian mysql]# vi /etc/my.cnf
将里面的命令都删除掉,添加以下命令,保存并退出
[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=/usr/local/mysql # 设置mysql数据库的数据的存放目录 datadir=/usr/local/mysql/data # 允许最大连接数 max_connections=1500 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用"mysql_native_password"插件认证 default_authentication_plugin=mysql_native_password # 区分大小写,0区分,1不区分,填写这个配置前提是在initialize初始化数据库的时候加参数--lower_case_table_names=1,否则报错 lower_case_table_names=1 [client] # 设置mysql客户端连接服务端时默认使用的端口 default-character-set=utf8
💻启动Mysql服务
[root@xiaojian mysql]# cd /usr/local/mysql/support-files [root@xiaojian support-files]# ./mysql.server start #如果执行有问题 [root@xiaojian support-files]# chmod -R 777 /usr/local/mysql #注意 1.该命令会将/usr/local/mysql目录及其所有子目录和文件的权限设置为777,即所有用户都可以读取、写入和执行这些目录和文件。 2.chmod命令用于修改文件或目录的访问权限。其中,-R选项表示递归修改,即连同子目录和文件一起修改。权限数字777表示所有用户都有读、写和执行权限。 3.需要注意的是,给文件或目录设置777权限可能会存在安全风险,因为这允许所有用户对文件或目录进行操作。因此,应该根据实际需要设置适当的权限。
启动服务
[root@xiaojian mysql]# cd /usr/local/mysql/support-files [root@xiaojian support-files]# ./mysql.server start Starting MySQL SUCCESS! [root@xiaojian support-files]#
停止服务
[root@xiaojian support-files]# ./mysql.server stop Shutting down MySQL.. SUCCESS! [root@xiaojian support-files]#
如果安装包支持systemd,按下方式启动服务器。
1.systemctl {start|stop|restart|status} mysqld systemctl start mysqld:启动MySQL服务器。 systemctl stop mysqld:停止MySQL服务器。 systemctl restart mysqld:重新启动MySQL服务器。 systemctl status mysqld:查看MySQL服务器的状态,包括是否正在运行、已经运行的进程等。 2.service mysqld {start|stop|restart|status} service mysqld start:启动MySQL服务器。 service mysqld stop:停止MySQL服务器。 service mysqld restart:重新启动MySQL服务器。 service mysqld status:查看MySQL服务器的状态,包括是否正在运行、已经运行的进程等。 service mysqld reload:重载配置
💻修改Mysql登录密码
1.重新启动Mysql后查看进程
#查看 Mysql 进程 ps -ef|grep mysql #查看 3306 端口 netstat -ano |grep "3306"
2.登录Mysql输入初始化随机生成的密码
[root@xiaojian mysql]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.33 Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
-
#设置Mysql新密码为
'root'
-
mysql
>
alter
user
'root'@
'localhost' IDENTIFIED
WITH mysql_native_password
BY
'root';
-
Query OK,
0
rows affected (
0.00 sec)
-
-
-
#设置允许远程登录
-
mysql
> use mysql;
-
Reading
table information
for completion
of
table
and
column names
-
You can turn off this feature
to
get a quicker startup
with
-A
-
-
Database changed
-
#允许root用户从任何主机连接到MySQL服务器。
-
mysql
>
update
user
set user.Host
=
'%'
where user.User
=
'root';
-
Query OK,
1
row affected (
0.00 sec)
-
Rows matched:
1 Changed:
1 Warnings:
0
-
-
#刷新权限
-
mysql
> flush privileges;
-
Query OK,
0
rows affected (
0.01 sec)
-
-
#退出
-
mysql
> exit;
3.设置Mysql 开机自启
-
#将Mysql添加到系统进程中
-
[root
@xiaojian mysql]# cp
/usr
/
local
/mysql
/support
-files
/mysql.server
/etc
/init.d
/mysqld
-
[root
@xiaojian mysql]# chown
777
/etc
/my.cnf
-
[root
@xiaojian mysql]# chmod
+x
/etc
/init.d
/mysqld
-
[root
@xiaojian mysql]# systemctl enable mysqld
-
-
#重新启动后(可测试Linux开机自启Mysql)
-
[root
@xiaojian mysql]# reboot
💻查看防火墙开放端口
#使用 firewall-cmd --list-all 命令可以列出当前防火墙的所有规则和状态。这将显示公共区域、信任区域和排除区域的规则,以及每个区域中已打开的端口和接受连接的端口。 [root@xiaojian mysql]# firewall-cmd --list-all #在防火墙中将3306端口开放 使用 firewall-cmd --zone=public --add-port=3306/tcp --permanent 命令想要在防火墙公共区域上永久添加3306/tcp端口。 注意:--permanent为永久生效,没有此参数 服务器重启后配置失效 [root@xiaojian mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent #使用 firewall-cmd --reload 命令来重新加载防火墙配置。这个命令会重新读取防火墙配置文件,并将任何已更改或新添加的规则应用于防火墙。 [root@xiaojian mysql]# firewall-cmd --reload
#查看当前所有tcp端口 netstat -lptn #查看所有3306端口使用情况 netstat -lptn |grep 3306
附属
生产环境必须开启防火墙保证服务器的数据安全,所以需要开启防火墙并且开启对应的服务端口。
使用iptables工具配置Linux防火墙的简单步骤:
1.确认已安装iptables防火墙工具。
yum install iptables
2.配置防火墙规则,例如允许或拒绝特定IP地址、端口或协议的流量。以下是一个允许IP地址为192.168.0.100的TCP流量通过端口22的示例:
iptables -A INPUT -s 192.168.0.100 -p tcp --dport 22 -j ACCEPT
3.保存防火墙规则,以便在系统重启后也生效。可以使用以下命令保存:
iptables-save > /etc/sysconfig/iptables
4.确保防火墙规则在系统启动时自动加载,可以使用以下命令:
systemctl enable iptables systemctl start iptables
以上是配置Linux防火墙的基本步骤,可以根据您的需求和配置文件来配置更复杂的规则。同时,也可以使用其他工具,如firewalld来配置和管理防火墙,它提供了更简单的界面和更快的速度。
💻防火墙配置(摘录)
-
1.firewall 防火墙
-
-
基本使用
-
-
# 启动
-
systemctl start firewalld.service
-
-
# 停止
-
systemctl stop firewalld.service
-
-
# 重启
-
systemctl restart firewalld.service
-
-
# 查看状态
-
systemctl status firewalld.service
-
-
# 启用, 开机自启服务
-
systemctl enable firewalld.service
-
-
# 禁用, 开机自启服务
-
systemctl disable firewalld.service
-
-
# 查看是否开机启动
-
systemctl is-enabled firewalld.service
-
-
# 查看已启动的服务列表
-
systemctl list-unit-files | grep enabled
-
-
# 查看启动失败的服务列表
-
systemctl --failed
-
命令后 .service 不加也可以
-
-
-
-
基本配置 firewalld-cmd
-
-
# 查看版本
-
firewall-cmd --version
-
-
# 查看帮助
-
firewall-cmd --help
-
-
# 显示状态
-
firewall-cmd --state
-
-
# 开发一个端口
-
firewall-cmd --zone=public --permanent --add-port=端口/tcp
-
-
参数:--permanent永久生效,没有此参数重启后失效 --add-port 端口
-
-
-
# 更新防火墙规则
-
firewall-cmd --reload
-
-
# 删除端口
-
firewall-cmd --zone=public --permanent --remove-port=端口/tcp
-
-
# 查看端口是否开放
-
firewall-cmd --zone=public --query-port=端口/tcp
-
-
# 查看所有打开的端口
-
firewall-cmd --zone=public --list-ports
-
-
# 查看防火墙规则
-
firewall-cmd --list-all
-
-
# 查看区域信息
-
firewall-cmd --get-active-zones
-
-
# 查看指定接口所属区域
-
firewall-cmd --get-zone-of-interface=eth0
-
-
# 拒绝所有包
-
firewall-cmd --panic-on
-
-
# 取消拒绝状态
-
firewall-cmd --panic-off
-
-
# 查看是否拒绝
-
firewall-cmd --query-panic
-
-
-
-
2.iptables 防火墙
-
-
安装 iptables
-
-
# 检查状态
-
systemctl status iptables.service
-
-
# 停止firewall
-
systemctl stop firewalld.service
-
-
# 禁用开机启动firewall
-
systemctl disable firewalld.service
-
-
# 安装 iptables
-
yum install -y iptables iptables-services
-
-
# 启动 iptables
-
systemctl start iptables.service
-
-
# 启用开机启动 iptables
-
systemctl enable iptables.service
-
-
-
-
-
设置规则
-
-
参数:
-
-t
<表>:指定要操纵的表
-
-A:向规则链中添加条目
-
-D:从规则链中删除条目
-
-i:向规则链中插入条目
-
-R:替换规则链中的条目
-
-L:显示规则链中已有的条目
-
-F:清除规则链中已有的条目
-
-Z:清空规则链中的数据包计算器和字节计数器
-
-N:创建新的用户自定义规则链
-
-P:定义规则链中的默认目标
-
-h:显示帮助信息
-
-p:指定要匹配的数据包协议类型
-
-s:指定要匹配的数据包源ip地址
-
-j
<目标>:指定要跳转的目标
-
-i
<网络接口>:指定数据包进入本机的网络接口
-
-o
<网络接口>:指定数据包要离开本机所使用的网络接口
-
# 查看iptables现有规则
-
iptables -L -n
-
-
# 先允许所有,不然有可能会杯具
-
iptables -P INPUT ACCEPT
-
-
# 清空所有默认规则
-
iptables -F
-
-
# 清空所有自定义规则
-
iptables -X
-
-
# 所有计数器归0
-
iptables -Z
-
-
# 允许来自于lo接口的数据包(本地访问)
-
iptables -A INPUT -i lo -j ACCEPT
-
-
开放端口
-
iptables -A INPUT -p tcp -s IP地址 --dport 端口 -j ACCEPT
-
-
# 保存规则
-
service iptables save
-
-
# 允许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
-
-
# 如果要添加内网ip信任
-
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
-
-
# 过滤所有非以上规则的请求
-
iptables -P INPUT DROP
-
-
# 要封停一个IP,使用下面这条命令:
-
iptables -I INPUT -s IP地址 -j DROP
-
-
# 要解封一个IP,使用下面这条命令:
-
iptables -D INPUT -s IP地址 -j DROP
-
-
-
-
-
-
常用端口
-
-
# http 80
-
# https 443
-
# mysql 3306
-
# mongodb 27017
-
# postgre 5432
-
# elasticsearch 9200
-
# redis 6379
-
# rabbitmq 15672, 5672
-
# consul 8500
-
# nacos 8848
-
# ftp 21
-
# ssh 22
-
# telnet 23
-
# smtp 25
-
-
-
firewall 实例
-
-
# 开放 mysql 端口
-
firewall-cmd --zone=public --permanent --add-port=3306/tcp
-
-
# 重新载入规则
-
firewall-cmd --reload
-
-
# 删除 mysql 端口
-
firewall-cmd --zone=public --permanent --remove-port=3306/tcp
-
-
-
-
iptables 实列
-
-
开放端口
-
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
-
-
# 保存规则
-
service iptables save
-
-
删除端口
-
iptables -D INPUT -p tcp --dport 3306 -j ACCEPT