Linux下MySQL的安装部署

MySQL数据库存在多种版本,不同的版本在不同的平台上(OS,也就是操作系统上)安装方式可能有所不同,因此安装时一定要参数官方文档进行安装。 MySQL :: MySQL Documentation

Linux下MySQL的安装部署_第1张图片

选择需要的MySQL官方提供的不同版本,点击后在选择MySQL对应版本的,就可以找到安装教程,如意MySQL5.7为例:https://dev.mysql.com/doc/refman/5.7/en/installing.html

Linux下MySQL的安装部署_第2张图片

可以选择平台对应的安装方式。

1.RPM安装

(1)离线安装

<1>下载RPM安装包

[root@node4 ~]# wget -c https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar

[root@node4 ~]# ll mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar

-rw-r--r--. 1 root root 570583040 Jun 22 21:31 mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar

<2>解压

[root@node4 ~]# mkdir mysql

[root@node4 ~]# tar xvf mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar -C mysql

[root@node4 ~]# cd mysql/

[root@node4 mysql]# ll

total 557208

-rw-r--r--. 1 7155 31415  32652444 Jun 22 21:27 mysql-community-client-5.7.43-1.el7.x86_64.rpm

-rw-r--r--. 1 7155 31415    320780 Jun 22 21:27 mysql-community-common-5.7.43-1.el7.x86_64.rpm

-rw-r--r--. 1 7155 31415   4969828 Jun 22 21:27 mysql-community-devel-5.7.43-1.el7.x86_64.rpm

-rw-r--r--. 1 7155 31415  48586584 Jun 22 21:27 mysql-community-embedded-5.7.43-1.el7.x86_64.rpm

-rw-r--r--. 1 7155 31415  23314208 Jun 22 21:27 mysql-community-embedded-compat-5.7.43-1.el7.x86_64.rpm

-rw-r--r--. 1 7155 31415 134413980 Jun 22 21:27 mysql-community-embedded-devel-5.7.43-1.el7.x86_64.rpm

-rw-r--r--. 1 7155 31415   3091092 Jun 22 21:27 mysql-community-libs-5.7.43-1.el7.x86_64.rpm

-rw-r--r--. 1 7155 31415   1266220 Jun 22 21:27 mysql-community-libs-compat-5.7.43-1.el7.x86_64.rpm

-rw-r--r--. 1 7155 31415 193030448 Jun 22 21:28 mysql-community-server-5.7.43-1.el7.x86_64.rpm

-rw-r--r--. 1 7155 31415 128921364 Jun 22 21:28 mysql-community-test-5.7.43-1.el7.x86_64.rpm

解释:

这些包是针对 CentOS 7 操作系统的 MySQL 社区版软件包。以下是每个软件包的简要解释:

mysql-community-client: MySQL 客户端,提供与 MySQL 服务器进行交互的工具和客户端库。

mysql-community-common: MySQL 服务器和客户端共享的一些通用文件。

mysql-community-devel: MySQL 开发库,包含用于开发 MySQL 应用程序所需的头文件和开发库文件。

mysql-community-embedded: 嵌入式 MySQL 服务器,可以将 MySQL 作为一个库嵌入到其他应用程序中。

mysql-community-embedded-compat: MySQL 之前版本的共享兼容库,用于与旧版 MySQL 兼容。

mysql-community-embedded-devel: 嵌入式 MySQL 的开发库,用于开发嵌入式 MySQL 应用程序。

mysql-community-libs: MySQL 的共享库,包含实现 MySQL 库的运行时库。

mysql-community-libs-compat: MySQL 之前版本的共享兼容库,用于与旧版 MySQL 兼容。

mysql-community-server: MySQL 服务器,用于托管和管理 MySQL 数据库。

mysql-community-test: MySQL 测试组件,包含用于测试 MySQL 功能和性能的工具和示例。

 

<3>Installing MySQL

[root@node4 mysql]# rpm -ivh mysql*

warning: mysql-community-client-5.7.43-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY

error: Failed dependencies:

        mariadb-libs is obsoleted by mysql-community-libs-5.7.43-1.el7.x86_64

        mariadb-libs is obsoleted by mysql-community-libs-compat-5.7.43-1.el7.x86_64

        perl(JSON) is needed by mysql-community-test-5.7.43-1.el7.x86_64

这里安装时和mariadb冲突了,需要把这些包卸载了

[root@node4 mysql]# yum install -y mysql*   #这里为了放便就用yum全安了

(2)在线安装

配置一个yum源

<1> Adding the MySQL Yum Repository

[root@node3 ~]# yum install http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm -y

[root@node3 yum.repos.d]# ll | grep mysql-community

-rw-r--r--. 1 root root 1627 Apr  5  2017 mysql-community.repo

-rw-r--r--. 1 root root 1663 Apr  5  2017 mysql-community-source.repo

[root@node3 yum.repos.d]# yum repolist enabled | grep "mysql.*-community.*"  #开启的安装包

mysql-connectors-community/x86_64 MySQL Connectors Community                 234

mysql-tools-community/x86_64      MySQL Tools Community                      102

mysql57-community/x86_64          MySQL 5.7 Community Server                 696

 

配置的5.7版本的源也有其他版本的,实际用的还是5.7,其他的要启用

Linux下MySQL的安装部署_第3张图片

<2>Installing MySQL

[root@node3 ~]# yum install mysql-community-server.x86_64 

2.docker容器安装--临时或测试

CentOS 7的docker版本太低,这里再阿里镜像里下载

docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站 (aliyun.com)

 

CentOS 7(使用 yum 进行安装)

1.step 1: 安装必要的一些系统工具

[root@node3 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

2. Step 2: 添加软件源信息

[root@node3 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3. Step 3

[root@node3 ~]# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

4. Step 4: 更新并安装Docker-CE

[root@node3 ~]# yum makecache fast

[root@node3 ~]# yum -y install docker-ce

5. Step 5: 开启Docker服务

[root@node3 ~]# service docker start

配置镜像加速器

https://lfhqfxbn.mirror.aliyuncs.com

配置镜像加速器

针对Docker客户端版本大于 1.10.0 的用户

可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

[root@node3 ~]# mkdir -p /etc/docker

[root@node3 ~]# sudo tee /etc/docker/daemon.json <<-'EOF'

> {

>   "registry-mirrors": ["https://lfhqfxbn.mirror.aliyuncs.com"]

> }

> EOF

{

  "registry-mirrors": ["https://lfhqfxbn.mirror.aliyuncs.com"]

}

[root@node3 ~]# systemctl daemon-reload

[root@node3 ~]# systemctl restart docker

安装MySQL

[root@node3 ~]# docker pull mysql:5.7   #拉取mysql5.7的镜像

[root@node3 ~]# docker run --name mysqltest -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

3a4c209590f41ae4d061e7c2829face670ceb0a29985c1f2c9bd9278cdf209cf

建了一个名为 mysqltest 的 MySQL 容器,并在容器中运行 MySQL 5.7 版本的镜像。-e 参数用于设置 MySQL root 用户的密码为 123456。

-d 参数表示以后台方式运行容器。命令返回的输出 3a4c209590f41ae4d061e7c2829face670ceb0a29985c1f2c9bd9278cdf209cf 是容器的唯一标识符,也就是容器 ID。

[root@node3 ~]# docker ps   #列出当前正在运行的 Docker 容器

CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                 NAMES

3a4c209590f4   mysql:5.7   "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   3306/tcp, 33060/tcp   mysqltest

[root@node3 ~]# docker images   #列出本地已安装的 Docker 镜像

REPOSITORY   TAG       IMAGE ID       CREATED         SIZE

mysql        5.7       c20987f18b13   24 months ago   448MB

[root@node3 ~]# docker exec -it mysqltest bash   #这个命令将进入名为 mysqltest 的容器的交互式终端。

root@3a4c209590f4:/# mysql -uroot -p123456

mysql>

3.源码安装

参考官方文档

MySQL :: Download MySQL Community Server (Archived Versions)

[root@node3 ~]# yum install -y gcc gcc-c++ ncurses ncurses-devel openssl-devel make cmake   #安装相关依赖

[root@node3 ~]# wget -c https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.43.tar.gz

[root@node3 ~]# tar -xvf mysql-boost-5.7.43.tar.gz -C /usr/local/src/

[root@node3 ~]# mkdir -p /data/mysql

[root@node3 mysql-5.7.43]# mkdir builer  #新建目录,存放编译产生的中间文件。因为不允许在源码目录下进行编译

[root@node3 mysql-5.7.43]# cd builer/

[root@node3 builer]# cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost

[root@node3 builer]# make && make install

 

cmake命令所使用的参数说明:

  • -DCMAKE_INSTALL_PREFIX=/usr/local/mysql:MySQL安装的根目录
  • -DMYSQL_DATADIR=/data/mysql:数据文件所存放的目录
  • -DSYSCONFDIR=/etc :MySQL配置文件所在目录
  • -DMYSQL_USER=mysql:MySQL服务的用户名
  • -DWITH_MYISAM_STORAGE_ENGINE=1:安装MyISAM引擎
  • -DWITH_INNOBASE_STORAGE_ENGINE=1:安装InnoDB引擎
  • -DWITH_ARCHIVE_STORAGE_ENGINE=1:安装Archive引擎
  • -DWITH_MEMORY_STORAGE_ENGINE=1:安装Memory引擎
  • -DWITH_FEDERATED_STORAGE_ENGINE=1:安装Federated引擎
  • -DWITH_PARTITION_STORAGE_ENGINE=1:安装Partition引擎
  • -DWITH_READLINE=1:MySQL的readline library
  • -DMYSQL_UNIX_ADDR=/tmp/mysql.sock:sock文件的路径
  • -DMYSQL_TCP_PORT=3306 :MySQL的监听端口
  • -DENABLED_LOCAL_INFILE=1:启用加载本地数据
  • -DENABLE_DOWNLOADS=1:编译时允许自主下载相关文件
  • -DEXTRA_CHARSETS=all :使MySQL支持所有的扩展字符
  • -DDEFAULT_CHARSET=utf8mb4:设置默认字符集为utf8mb4
    -DDEFAULT_COLLATION=utf8mb4_general_ci:设置默认字符校对
  • -DWITH_DEBUG=0:禁用调试模式
  • -DMYSQL_MAINTAINER_MODE=0:是否启用mysql维护器特定的开发环境
  • -DDOWNLOAD_BOOST=1:允许在线更新boost库
  • -DWITH_BOOST=…/boost:指定boost安装路径

 

编译安装完成后,创建mysql用户及更改相应目录的属主

[root@node3 mysql-5.7.43]# groupadd mysql

[root@node3 mysql-5.7.43]# useradd -M -g mysql -s /sbin/nologin mysql

[root@node3 builer]# chown -R mysql:mysql /usr/local/mysql/  #将 /usr/local/mysql/ 目录下的所有文件和文件夹的所有者改为 mysql 用户,所属组也改为 mysql 组。

[root@node3 builer]# chown -R mysql:mysql /data/mysql/  #将 /data/mysql/ 目录下的所有文件和文件夹的所有者改为 mysql 用户,所属组也改为 mysql 组。

 

编辑配置文件

[root@localhost ~]# vim /etc/my.cnf

[mysqld]

basedir=/usr/local/mysql

datadir=/data/mysql

socket=/tmp/mysql.sock

 

[mysqld_safe]

log-error=/var/log/mysqld/mysqld.log

pid-file=/var/run/mysqld/mysql.pid

 

创建日志文件存放的目录和pid文件存放的目录,并赋权给mysql用户

[root@node3 builer]# mkdir -p /var/log/mysqld /var/run/mysqld

[root@node3 builer]# chown -R mysql:mysql /var/log/mysqld

[root@node3 builer]# chown -R mysql:mysql /var/run/mysqld

 

配置环境变量,方便使用MySQL的命令

[root@node3 builer]# vim /etc/profile

export MYSQL_HOME=/usr/local/mysql

export PATH=$PATH:$MYSQL_HOME/bin

[root@node3 builer]# source /etc/profile

[root@node3 builer]# mysql --version   #查看版本,检验是否安装成功

mysql  Ver 14.14 Distrib 5.7.43, for Linux (x86_64) using  EditLine wrapper

 

初始化数据库

[root@node3 builer]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql

初始化成功后会生成root账户的默认密码。

将该密码复制并保存,因为后面需要使用该密码登录到MySQL中修改密码。

 

MySQL生成的启动文件复制到/usr/lib/systemd/system/目录下

[root@node3 builer]# cp /usr/local/src/mysql-5.7.43/builer/scripts/mysqld.service /usr/lib/systemd/system/

[root@node3 builer]# chown 775 /usr/lib/systemd/system/mysqld.service

 

4.通用二进制安装--生产环境

MySQL :: Download MySQL Community Server

1、下载glibc版本的Mysql

mysql-5.7.14-linux-glibc2.5-x86_64.tar

Linux下MySQL的安装部署_第4张图片

这里下载出了问题所以就用SFTP传过来了

Linux下MySQL的安装部署_第5张图片

 

2、新建用户以安全方式运行进程

[root@node2 ~]# groupadd -r -g 306 mysql

[root@node2 ~]# useradd -g 306 -r -u 306 mysql

 

3、安装并初始化mysql

[root@node2 ~]# tar xf mysql-5.7.14-linux-glibc2.5-x86_64.tar -C /usr/local/

[root@node2 ~]# cd /usr/local/

[root@node2 local]# tar xf mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz

[root@node2 local]# ln -sv mysql-5.7.14-linux-glibc2.5-x86_64 mysql

‘mysql’ -> ‘mysql-5.7.14-linux-glibc2.5-x86_64’

[root@node2 local]# mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

2023-12-21T08:09:03.520176Z 1 [Note] A temporary password is generated for root@localhost: 7YKx-o5(:jb_

#初始化会生成默认密码

 

4.提供配置文件和服务脚本

[root@node3 ~]# cd /usr/local/mysql

[root@node2 mysql]# \cp support-files/my-default.cnf /etc/my.cnf

[root@node2 mysql]# vim /etc/my.cnf

datadir=/usr/local/mysql/data

 

5.为mysql提供sysv服务脚本

[root@node2 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

[root@node2 mysql]# chmod +x /etc/rc.d/init.d/mysqld

[root@node2 mysql]# chkconfig --add mysqld #添加为系统服务

[root@node2 mysql]# chkconfig mysqld on  #开机自启

 

6..添加环境变量

[root@node2 mysql]# cd /etc/profile.d/

[root@node2 profile.d]# vim mysql.sh

export PATH=$PATH:/usr/local/mysql/bin

[root@node2 profile.d]# source mysql.sh

 

7.重启并修改密码

[root@node2 profile.d]# cd

[root@node2 ~]# systemctl restart mysqld

[root@node2 ~]# mysql -uroot -p

Enter password:

mysql> alter user root@localhost identified by '123456K=x=y';

Query OK, 0 rows affected (0.00 sec)

mysql> \q

Bye

[root@node2 ~]# mysql -uroot -p123456K=x=y

mysql>

5.密码恢复

[root@node3 builer]# vim /etc/my.cnf

skip-grant-tables

加上这一行(跳过授权表)  最后修改完了之后再删掉

[root@node3 builer]# systemctl start mysqld.service

[root@node3 builer]# mysql -uroot -p  #可以无密码登录

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456K=x=y';  #修改密码

 

6.安装完成后的部署

不管怎么安装的最后都要启动

[root@node4 mysql]# systemctl start mysqld.service     #启动

[root@node4 mysql]# systemctl enable mysqld.service --now   #开机自启

查看默认密码

node4为例子其他都一样无论怎么安装的。 注意:docker和源码安装可以设置简单密码

[root@node4 mysql]# awk '/temporary password/ {print $NF}' /var/log/mysqld.log

[root@node4 mysql]# mysql -uroot -p''   #使用默认密码登录

mysql> show databases;

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.   #这里必须修改密码才可以使用mysql

mysql> alter user root@localhost identified by '123456';   #密码要符合复杂性要求

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

mysql> alter user root@localhost identified by '123456K=x=y'; #有数字大小写和符号

Query OK, 0 rows affected (0.00 sec)

平时练习可以更改密码策略,

mysql> show variables like 'validate_password%';   #查看密码策略

+--------------------------------------+--------+

| Variable_name                        | Value  |

+--------------------------------------+--------+

| validate_password_check_user_name    | OFF    |

| validate_password_dictionary_file    |        |

| validate_password_length             | 8      |

| validate_password_mixed_case_count   | 1      |

| validate_password_number_count       | 1      |

| validate_password_policy             | MEDIUM |

| validate_password_special_char_count | 1      |

+--------------------------------------+--------+

7 rows in set (0.00 sec)

mysql> set global validate_password_policy=LOW;

Query OK, 0 rows affected (0.00 sec)

当前密码长度为8,如果不介意的话就不用修改了,按照最低要求的来讲,设置为 4 位的密码,设置 validate_password_length 的全局参数为 4 即可

mysql> set global validate_password_length=4;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'validate_password%';

+--------------------------------------+-------+

| Variable_name                        | Value |

+--------------------------------------+-------+

| validate_password_check_user_name    | OFF   |

| validate_password_dictionary_file    |       |

| validate_password_length             | 4     |

| validate_password_mixed_case_count   | 1     |

| validate_password_number_count       | 1     |

| validate_password_policy             | LOW   |

| validate_password_special_char_count | 1     |

+--------------------------------------+-------+

7 rows in set (0.00 sec)

mysql> alter user root@localhost identified by 'mysql';  #再次修改密码

Query OK, 0 rows affected (0.00 sec)

mysql> \q   #退出,或者是exit

Bye

[root@node4 mysql]# mysql -uroot -pmysql   #登录即可

你可能感兴趣的:(mysql,安装部署,源码安装,rpm包安装,docker容器安装,二进制安装)