Linux系统安装Mysql二进制文件

💻前言

为了简化安装和配置过程,许多Linux发行版提供了预编译的二进制MySQL安装包,这些安装包已经经过测试和验证,可以在大多数Linux系统上正常工作。通过安装这些二进制MySQL安装包,可以省去从源代码编译和安装的繁琐过程,提高安装和配置的效率。

此外,二进制MySQL安装包也包含了一些预配置的参数和选项,这些参数和选项已经经过优化和调整,可以满足大多数用户的需求。如果需要更高级的配置或定制化的选项,可以使用源代码进行编译和安装。

💻下载Linux版Mysql

官方地址:https://www.mysql.com/

下载步骤:

通过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 jdk1.8.0_171
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib64
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-glibc2.12-x86_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-glibc2.12-x86_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 jdk1.8.0_171
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib64
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]# 

💻添加用户/组

XML 复制代码
#进入到安装目录
[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生成默认随机密码

XML 复制代码
#创建数据库文件存放的文件夹。这个文件夹将来存放每个数据库的库文件  
[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配置文件

XML 复制代码
[root@xiaojian mysql]# vi /etc/my.cnf

将里面的命令都删除掉,添加以下命令,保存并退出

XML 复制代码
[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服务

XML 复制代码
[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权限可能会存在安全风险,因为这允许所有用户对文件或目录进行操作。因此,应该根据实际需要设置适当的权限。

启动服务

XML 复制代码
[root@xiaojian mysql]# cd /usr/local/mysql/support-files
[root@xiaojian support-files]# ./mysql.server start
Starting MySQL SUCCESS! 
[root@xiaojian support-files]#

停止服务

XML 复制代码
[root@xiaojian support-files]# ./mysql.server stop
Shutting down MySQL.. SUCCESS! 
[root@xiaojian support-files]# 

如果安装包支持systemd,按下方式启动服务器。

XML 复制代码
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后查看进程

XML 复制代码
#查看 Mysql 进程
ps -ef|grep mysql

#查看 3306 端口
netstat -ano |grep "3306" 

2.登录Mysql输入初始化随机生成的密码

XML 复制代码
[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> 
sql 复制代码
#设置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 开机自启

sql 复制代码
#将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

💻查看防火墙开放端口

XML 复制代码
#使用 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 
XML 复制代码
#查看当前所有tcp端口
netstat -lptn 

#查看所有3306端口使用情况
netstat -lptn |grep 3306 

附属

生产环境必须开启防火墙保证服务器的数据安全,所以需要开启防火墙并且开启对应的服务端口。

使用iptables工具配置Linux防火墙的简单步骤:

1.确认已安装iptables防火墙工具。

XML 复制代码
yum install iptables

2.配置防火墙规则,例如允许或拒绝特定IP地址、端口或协议的流量。以下是一个允许IP地址为192.168.0.100的TCP流量通过端口22的示例:

XML 复制代码
iptables -A INPUT -s 192.168.0.100 -p tcp --dport 22 -j ACCEPT

3.保存防火墙规则,以便在系统重启后也生效。可以使用以下命令保存:

XML 复制代码
iptables-save > /etc/sysconfig/iptables

4.确保防火墙规则在系统启动时自动加载,可以使用以下命令:

XML 复制代码
systemctl enable iptables  
systemctl start iptables

以上是配置Linux防火墙的基本步骤,可以根据您的需求和配置文件来配置更复杂的规则。同时,也可以使用其他工具,如firewalld来配置和管理防火墙,它提供了更简单的界面和更快的速度。

💻防火墙配置(摘录)

XML 复制代码
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
 
相关推荐
wdxylb4 小时前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
飞雪20075 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪5 小时前
关于Linux内核中头文件问题相关总结
linux
海绵不是宝宝8176 小时前
连接远程服务器上的 jupyter notebook,解放本地电脑
服务器·jupyter·github
Lovyk8 小时前
Linux 正则表达式
linux·运维
Fireworkitte9 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9009 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char9 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
繁星¹⁸⁹⁵10 小时前
通过update-alternatives可以实现cuda的多版本切换
服务器
淮北也生橘1211 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习