Linux部署MySQL8.0—手把手保姆级教程

一、下载MySQL8.0安装包

MySQL官网 下载地址 下载之前可以查看一下系统的位数,下面有指令
在这里插入图片描述
查看系统的位数(32位或64位)

getconf LONG_BIT

我这里是64位的,所以这里我就下载64位, 可以在官网下载后上传上去,我这里就直接使用服务器下载了

sudo wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz

在这里插入图片描述

二、安装MySQL8.0

2.1 解压安装包

sudo tar xvJf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz

在这里插入图片描述
2.2 修改文件名称

sudo mv mysql-8.0.36-linux-glibc2.28-x86_64 mysql-8.0.36

2.3 创建相关文件夹

进入到mysql-8.0.36文件夹中

sudo mkdir data   # 数据存储
sudo mkdir log    # 日志存储
sudo mkdir tmp    # 临时文件

2.4 新增用户组

sudo groupadd mysql

2.5 新增组用户

sudo useradd -g mysql mysql

2.6 用户授权 指向mysql8.0安装目录

sudo chown -R mysql.mysql /usr/local/mysql8.0/mysql-8.0.36 
 #这里用自己实际的安装目录即可 可以通过  pwd  指令查看当前目录路径

在这里插入图片描述

三、初始化数据库

再安装目录下执行

sudo ./bin/mysqld --user=mysql --basedir=/usr/local/mysql8.0/mysql-8.0.36/ --datadir=/usr/local/mysql8.0/mysql-8.0.36/data/ --initialize ;

在这里插入图片描述
执行后 :红色框框中的为 初始密码,这个需要记住

四、编写配置文件

vi /etc/my.cnf  
# 正常情况下是没有这个文件的,执行保存之后会自动创建

配置文件内容如下(文件路径记得改为自己的)

#[mysqld]
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
 
#[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid
 
#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d


# MySQL客户端程序的配置部分
[mysql]
# MySQL安装的基本目录
#basedir=/usr/local/mysql8.0/mysql-8.0.36
# MySQL数据文件存放的目录
#datadir=/usr/local/mysql8.0/mysql-8.0.36/data/
# MySQL服务通信的socket文件位置
socket=/usr/local/mysql8.0/mysql-8.0.36/tmp/mysql.sock
# MySQL服务监听的端口号
port=3306
# 运行MySQL服务的用户名
user=mysql
# 跳过权限表,通常用于恢复或维护,不建议在生产环境中启用
#skip-grant-tables

# 指定日志中的时间戳格式使用系统时间——建议不开启,开启后识别不到异常
#log_timestamps=SYSTEM

# 指定默认字符集,utf8是兼容性较好的选择,但请根据实际情况调整
default-character-set=utf8

# MySQL服务器程序的配置部分
[mysqld]
# MySQL服务器安装的基本目录
basedir=/usr/local/mysql8.0/mysql-8.0.36
# MySQL服务器数据文件存放的目录
datadir=/usr/local/mysql8.0/mysql-8.0.36/data
# MySQL服务器通信的socket文件位置
socket=/usr/local/mysql8.0/mysql-8.0.36/tmp/mysql.sock
# MySQL服务器监听的端口号
port=3306
# 运行MySQL服务器的用户名
user=mysql
# 确保日志中使用系统时间
log_timestamps=SYSTEM
# 设置服务器校对集,utf8_unicode_ci不区分大小写
collation-server = utf8_unicode_ci
# 设置服务器默认字符集
character-set-server = utf8

# 指定默认的身份验证插件,以兼容老版本客户端
default_authentication_plugin= mysql_native_password

# 此选项允许跳过权限表的认证,通常用于恢复或维护
#skip-grant-tables

# MySQL服务器安全启动的配置部分
[mysqld_safe]
# mysqld_safe进程的日志文件位置
log-error=/usr/local/mysql8.0/mysql-8.0.36/log/mysqld_safe.err
# mysqld_safe的pid文件存放位置
pid-file=/usr/local/mysql8.0/mysql-8.0.36/tmp/mysqld.pid
# mysqld_safe使用的socket文件位置
socket=/usr/local/mysql8.0/mysql-8.0.36/tmp/mysql.sock

# MySQL服务器启动脚本来使用的配置
[mysql.server]
# 如果需要,可以取消注释以指定MySQL的安装目录
#basedir=/usr/local/mysql8.0/mysql-8.0.36
# MySQL的数据文件存放目录
datadir=/usr/local/mysql8.0/mysql-8.0.36/data
# MySQL的socket文件位置
socket=/usr/local/mysql8.0/mysql-8.0.36/tmp/mysql.sock
# MySQL监听的端口号
port=3306
# 运行MySQL服务的用户名
user=mysql

# MySQLadmin工具的配置部分
[mysqladmin]
# mysqladmin工具使用的socket文件位置
socket=/usr/local/mysql8.0/mysql-8.0.36/tmp/mysql.sock

示例二 my.cnf

[mysqld]
port = 3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock
log-error=/usr/local/mysql/log/error.log
pid-file=/usr/local/mysql/data/mysqld.pid

#数据库默认字符集, 主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server=utf8mb4

#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server=utf8mb4_general_ci

#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'

#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1

#mysql兼容老版本
default_authentication_plugin=mysql_native_password

#最大连接数
max_connections=2000

#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

#慢SQL日志记录配置
#是否启用慢查询日志,1为启用,0为禁用  
slow_query_log=1

#指定慢查询日志文件的路径和名字
slow_query_log_file=/usr/local/mysql/log/slow.log

#慢查询执行的秒数,必须达到此值可被记录
long_query_time=30

# Bin-Log设置
server-id=166

#开启bin log 功能
log-bin=mysql-bin

#binlog 记录内容的方式,记录被操作的每一行
binlog_format=ROW

#对于binlog_format=ROW模式时,FULL模式可以用于误操作后的flashBack。
#如果设置为MINIMAL,则会减少记录日志的内容,只记录受影响的列,但对于部分update无法flashBack
binlog_row_image=FULL

#bin log日志保存的秒数
binlog_expire_logs_seconds=604800

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
transaction-isolation = READ-COMMITTED


# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/usr/local/mysql/log/mariadb.log
pid-file=/usr/local/mysql/data/mariadb.pid

[client]
socket=/var/lib/mysql/mysql.sock

[mysqldump]
quick
max_allowed_packet=128M

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d


五、初始化mysql服务

udo cp -a ./support-files/mysql.server /etc/init.d/mysql

sudo chmod +x /etc/init.d/mysql

sudo chkconfig --add mysql

指令作用如下

cp -a ./support-files/mysql.server /etc/init.d/mysql:这条指令用于将MySQL服务器的启动脚本mysql.server从MySQL安装目录下的./support-files文件夹复制到系统的服务管理目录/etc/init.d,以便可以使用系统服务管理工具来控制MySQL服务。

chmod +x /etc/init.d/mysql:这条指令用于给复制到/etc/init.d目录下的mysql脚本文件添加执行权限,确保它能够被系统调用执行启动、停止等操作。

chkconfig --add mysql:这条指令用于将MySQL服务添加到系统服务的管理系统中,chkconfig是Red Hat系列Linux系统(如CentOS、RHEL)中用于管理服务的命令,–add选项表示添加一个新的服务。执行后,MySQL服务将能够通过service命令或systemctl(在使用systemd的系统上)进行启动、停止和重启。

检测一下是否成功

chkconfig --list mysql

在这里插入图片描述
如图所示表示成功

六、启动运行MySQL服务

6.1 启动服务

sudo service mysql start

提示文件不存在之类的

sudo mkdir -p /usr/local/mysql8.0/mysql-8.0.36/log/
sudo chown mysql:mysql /usr/local/mysql8.0/mysql-8.0.36/log/
sudo chmod 777 /usr/local/mysql8.0/mysql-8.0.36/log/
sudo chown mysql:mysql /usr/local/mysql8.0/mysql-8.0.36/data/
sudo chmod 777 /usr/local/mysql8.0/mysql-8.0.36/data/
sudo chown mysql:mysql /usr/local/mysql8.0/mysql-8.0.36/tmp/
sudo chmod 777 /usr/local/mysql8.0/mysql-8.0.36/tmp/

执行以上命令 ,没有的文件就创建并且赋予权限,有的就直接赋予权限。

如果说还不行,则使用最简单粗暴的方法

sudo chown -R mysql:mysql /usr/local/mysql8.0/mysql-8.0.36/
sudo chmod 777 -R  /usr/local/mysql8.0/mysql-8.0.36/

使用递归的形式将 安装目录下的所有文件以及文件夹都开放所有权限

设置完成后重新执行启动指令

在这里插入图片描述
这时显示ok即可,也可以使用 service mysql status; 指令查询一下当前mysql的状态

6.2 修改MySQL密码

在登陆MySQL环境下分别执行一下指令

CREATE USER 'root'@'%' IDENTIFIED BY '密码';
GRANT ALL ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
FLUSH PRIVILEGES;

在这里插入图片描述

6.4 开启防火墙端口

分别执行一下两条指令即可

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

注意:如果是云服务器,还需要再安全组开通对应的端口。

6.5 使用工具远程连接

在这里插入图片描述

6.3 mysql忘记密码如何重置

如果您忘记了MySQL的root密码,可以按照以下步骤进行密码重置:

  1. 停止MySQL服务:

在Linux上,可以使用sudo systemctl stop mysql或sudo /etc/init.d/mysql stop。

  1. 启动MySQL的安全模式(跳过权限表):

在Linux上,可以使用sudo mysqld_safe --skip-grant-tables &。

3.登录到MySQL:

运行mysql -u root。

  1. 在MySQL命令行中,执行以下命令来更新密码:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

将新密码替换为您想要设置的新密码。

  1. 退出MySQL命令行:
quit;
  1. 停止安全模式下的MySQL服务(可以在第2步时直接使用CTRL+C来停止)。
  2. 重新启动MySQL服务:
    在Linux上,可以使用sudo systemctl start mysql或sudo /etc/init.d/mysql start。
    现在您应该可以使用新设置的密码登录到MySQL了。
部署 Linux 上的 MySQL 8.0 需要以下步骤: 1. **下载安装包**: 访问 MySQL 官网 (https://dev.mysql.com/downloads/mysql/) 下载适用于 LinuxMySQL 8.0 社区版或企业版的二进制安装包。通常选择 `.tar.gz` 或 `.deb` 格式。 2. **创建数据目录**: 创建一个专用的数据存储目录,例如 `/var/lib/mysql`。如果没有的话,需要先创建它。 3. **解压安装包**: 使用 tar 命令解压安装包: ``` tar -xvf mysql-8.0.25-linux-glibc2.17-x86_64.tar.gz -C /usr/local ``` 把 `8.0.25` 替换为下载的实际版本号。 4. **运行安装脚本**: 进入解压后的目录,运行 `scripts/mysql_install_db` 命令初始化数据库,并指定数据目录: ``` cd /usr/local/mysql-8.0.25-linux-glibc2.17-x86_64 ./scripts/mysql_install_db --datadir=/var/lib/mysql --user=mysql ``` 5. **启动服务**: 配置系统服务自动启动: ```bash sudo cp support-files/my-startup-initscript /etc/init.d/mysqld sudo chmod +x /etc/init.d/mysqld sudo update-rc.d mysqld defaults ``` 然后运行 `sudo service mysqld start` 启动服务。 6. **设置 root 用户密码**: 初始化数据库时,默认密码为空,首次登录: ``` sudo mysql ``` 设置新密码: ``` ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY 'new_password'; FLUSH PRIVILEGES; EXIT; ``` 之后记得退出并关闭连接。 7. **配置防火墙**: 如果有防火墙,允许 MySQL 端口访问: ``` sudo ufw allow 3306/tcp sudo ufw enable ``` 8. **检查配置**: 可以通过 `mysqld_safe --test` 来测试配置是否正确。 完成以上步骤后,MySQL 8.0 应该已经成功部署并运行起来了。记得定期备份数据,并保持系统更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值