Linux中部署Mysql保姆级教程

时间:2024-10-21 08:31:23

一、版本说明

        本文的版本号是5.7.30,5.6及以上版本的MySQL要求Linux系统虚拟内存不能小于1G,否则MySQL可能无法运行。

二、安装前的准备

2.1查看系统自带的Mariadb

rpm -qa|grep mariadb

安装mysql为什么需要卸载mariadb:
        以前的Linux系统中数据库大部分是mysql,不过自从被sun收购之后,就没有集成在centos这些开源Linux系统中了,centos7 已经不支持mysql,内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb。


2.2卸载系统自带的Mariadb

rpm -e --nodeps mariadb-libs-当前系统安装的版本


2.3确保系统已安装libaio

rpm -qa | grep libaio

 一般Linux系统默认就已安装,除非被手动卸载了

三、基于压缩包安装(推荐)

3.1解压压缩包

前置准备(在根目录下创建softWare文件夹,并进入到softWare文件夹下):

①在根目录下创建softWare文件夹

 mkdir /softWare

②进入到softWare文件夹下

 cd /softWare
3.1.1将压缩包(mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz)下载到softWare文件夹下

①方法一:将准备好的文件上传上去(推荐)

②方法二:通过wget下载

        wget命令如下:

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz


3.1.2解压

确保压缩包文件已上传成功:

解压命令如下:

tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz


3.1.3将解压后的文件转移到/usr/local路径下,并改名为mysql

命令如下:

mv mysql-5.7.30-linux-glibc2.12-x86_64 /usr/local/mysql


3.2修改配置

3.2.1创建数据存放目录

在/usr/local/mysql根目录下创建data文件夹,用于存在Mysql的数据

mkdir /usr/local/mysql/data


3.2.2查找MySQL的主配置文件 my.cnf 的位置

①进入到/usr/local/mysql/bin目录

cd /usr/local/mysql/bin

②查找Mysql的主配置文件路径

 ./mysql --help |grep 'my.cnf'

 在Linux系统中,/etc/my.cnf(注意是my.cnf而不是my.conf)是MySQL的主配置文件,它包含了数据库服务器运行所需的设置。这个文件可以包含各种配置指令,比如端口号、数据目录、日志文件位置、权限设置、性能优化参数等。


3.2.3编辑my.cnf文件 

执行vi /etc/my.cnf,复制并粘贴如下配置:

[mysql]
# 设置MySQL客户端的默认字符集为UTF-8
default-character-set=utf8

[mysqld]
# MySQL服务器监听的端口号为3306
port=3306
# 设置MySQL服务器监听的Unix套接字文件路径为/tmp/mysql.sock。
# 这允许本地客户端通过套接字文件连接到MySQL服务器,而不是通过TCP/IP端口
socket=/tmp/mysql.sock
# 设置MySQL的安装根目录
basedir=/usr/local/mysql
# 设置MySQL数据库的数据存放目录
datadir=/usr/local/mysql/data
# 设置MySQL服务器允许的最大并发连接数为200。这个值可以根据服务器的性能和负载进行调整。
max_connections=200
# 设置mysql服务端字符集,默认为latin1。UTF8MB4是UTF-8的超集,支持更多的字符,包括表情符号。
character-set-server=UTF8MB4
# 设置MySQL服务器的默认存储引擎为InnoDB
default-storage-engine=INNODB
#设置MySQL用户的密码永不过期。默认情况下,MySQL会要求定期更改密码,设置为0表示禁用此功能。
default_password_lifetime=0
#设置MySQL服务器允许的最大数据包大小为16MB。
#这个值限制了单个SQL语句或数据包的大小,可以根据需要调整。
max_allowed_packet=16M

3.3创建用户与用户组

3.3.1创建mysql 用户组
groupadd mysql

3.3.2创建mysql用户
useradd -r -g mysql mysql
  • -r:创建一个系统账户。系统账户通常用于系统服务和守护进程,而不是人类用户。
  • -g:指定用户的初始用户组。在这个例子中,用户mysql将被添加到mysql组中。
  • mysql:这是要创建的用户名。

3.3.3将 /usr/local/mysql 目录及其所有子目录和文件的所有者和组都更改为 mysql 用户和 mysql 组
chown -R mysql:mysql /usr/local/mysql

3.4初始化Mysql

3.4.1进入到/usr/local/mysql/bin目录下
cd /usr/local/mysql/bin

3.4.2执行初始化
./mysqld --initialize --user=mysql

注意,初始话完成后root用户的临时密码会打印在控制台

A temporary password is generated for root@localhost: 打印的密码

vop-hY,293ah为临时密码(根据自己控制台输出)

3.5启动Mysql

3.5.1进入/usr/local/mysql/support-files目录
/usr/local/mysql/support-files

3.5.2启动mysql服务
./mysql.server start


3.5.3查看启动进程信息
ps -ef|grep mysql

3.6修改密码

初次登录MySQL数据库需要重置密码才能继续后面的数据库操作

3.6.1进入/usr/local/mysql/bin目录
cd /usr/local/mysql/bin

3.6.2登录mysql
./mysql -u root -p

密码为之前控制台输出的临时密码


3.6.3修改密码
alter user 'root'@'localhost' identified by '你的密码';
  • alter user:这是MySQL 5.7及以上版本中用于修改用户账户的命令。
  • 'root'@'localhost':这是要修改的用户账户,其中'root'是用户名,'localhost'是主机名。
  • identified by '你的密码':这部分指定了新的密码。

以指定了新的密码为'123456'为例:

alter user 'root'@'localhost' identified by '123456';

然后重新登陆如下:

3.7允许远程连接(可选)——实际部署内网可访问即可

MySQL数据库默认不允许远程连接,可通过如下步骤允许远程连接:

3.7.1切换到mysql数据库
use mysql;

3.7.2更新MySQL数据库中的用户权限
update user set host = '%' where user = 'root';

root用户的host字段设置为%,这意味着允许root用户从任何主机连接到数据库。


3.7.3刷新权限
FLUSH PRIVILEGES;

注意:如何需要对外连接,需要开通对应的端口


3.7.4远程连接可能出现的问题

远程连接MySQL,提示如下错误:

解决如下:

alter user 'root'@'%' identified with mysql_native_password by '123456';
  • 这条语句明确指定了使用mysql_native_password插件来验证密码。
  • 适用于需要从外部网络访问MySQL服务器的情况,确保使用传统的密码验证方式。

3.8设置开机自启(可选)

3.8.1将服务文件拷贝到 /etc/init.d下,并重命名为mysqld
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

3.8.2赋予可执行权限
chmod +x /etc/init.d/mysqld
3.8.3添加服务
chkconfig --add mysqld
3.8.4显示服务列表
chkconfig --list

注:如果看到mysqld的服务,并且3,4,5都是on的话则成功

如果是off,则执行:

chkconfig --level 345 mysqld on

四、基于yum源安装(不推荐)

4.1下载yum源的RPM安装包

打开mysql官网:MySQL

4.1.1按如下步骤,找到yum源RPM安装包的下载地址

找到系统对应的版本,右击复制链接地址 

本案复制到的例链接地址:https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm


4.1.2下载RPM安装包
yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm

4.2把安装5.7的源打开, 关闭安装8.x的源(x会这新版本而更新)

4.2.1切换到yum源配置文件的路径下
 cd /etc/yum.repos.d/

下载好RPM包后会出现以下三个仓库:


4.2.2修改仓库配置文件
vim mysql-community.repo 

4.3安装mysql

yum -y install mysql-server

安装过程请检查版本是否正确,如果不正确,那么就是mysql-community.repo 仓库没有配置正确

4.4启动mysql

systemctl start mysqld

4.5查找临时密码

grep 'password' /var/log/mysqld.log

4.6修改密码

4.6.1进入mysql
mysql -u root -p

密码为临时密码 


4.6.2修改密码失败
alter user 'root'@'localhost' identified by '你的密码';
  • alter user:这是MySQL 5.7及以上版本中用于修改用户账户的命令。
  • 'root'@'localhost':这是要修改的用户账户,其中'root'是用户名,'localhost'是主机名。
  • identified by '你的密码':这部分指定了新的密码。

以指定了新的密码为'123456'为例:

alter user 'root'@'localhost' identified by '123456';


4.6.3修改密码校验策略

①仅检查密码长度

set global validate_password_policy=0;

validate_password_policy 是MySQL中的一个系统变量,用于控制密码验证策略的严格程度:

  • 0 或 LOW: 仅检查密码长度。
  • 1 或 MEDIUM: 检查密码长度、数字、小写字母、大写字母和特殊字符。
  • 2 或 STRONG: 在 MEDIUM 的基础上,还检查字典文件。

②设置密码的最小长度

SET GLOBAL validate_password_length = 1; 

validate_password_length是MySQL中的一个系统变量,用于设置密码的最小长度。将其设置为1意味着允许密码长度为1个字符

③再次修改密码

alter user 'root'@'localhost' identified by '123456';

4.7远程连接

同3.7

4.8yum安装mysql的一些默认路径

4.8.1数据目录

MySQL的数据目录通常位于/var/lib/mysql。这个目录包含了所有的数据库文件和表结构 

4.8.2配置文件

MySQL的主配置文件通常是my.cnf ,它可能位于/etc/my.cnf 或/etc/mysql/my.cnf 。这个文件包含了MySQL的各种配置选项 

4.8.3日志文件

MySQL的日志文件通常位于/var/log/mysqld.log 。这个文件记录了MySQL的运行日志,包括错误信息和启动信息 

4.8.4可执行文件

MySQL的可执行文件通常位于/usr/bin目录下,例如mysqlmysqladmin等 

4.8.5初始化脚本

MySQL的初始化脚本通常位于/etc/init.d/mysqld。这个脚本用于启动、停止和重启MySQL服务 

以上路径是通过YUM安装的MySQL的一些默认路径,但具体的路径可能会因不同的Linux发行版和安装方式而有所差异。