Linux下MySQL的安装部署

发布时间:2023年12月17日

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

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

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

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,其他的要启用

<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.密码恢复

[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';? #修改密码

?

5.安装完成后的部署

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

[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

<rQlL*V?T5yO

[root@node4 mysql]# mysql -uroot -p'<rQlL*V?T5yO'?? #使用默认密码登录

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?? #登录即可

6.求助

再二进制安装时,没有my-default.cnf服务器的模板配置文件

只做到了这些

MySQL :: Download MySQL Community Server

1、下载glibc版本的Mysql

mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

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

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

[root@node3 ~]# groupadd -r mysql

[root@node3 ~]# useradd mysql -r -g mysql -c "MYSQL Server" -s /bin/false

3、安装并初始化mysql

[root@node3 ~]# tar xf mysql-5.7.44-linux-glibc2.12-x86_64.tar -C /usr/local/

[root@node3 ~]# tar xf /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

[root@node3 ~]# ll /usr/local/mysql*

-rw-r--r--. 1 7161 31415 694785800 Oct 11 20:11 /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

-rw-r--r--. 1 7161 31415? 35456236 Oct 11 20:09 /usr/local/mysql-test-5.7.44-linux-glibc2.12-x86_64.tar.gz

[root@node3 local]# ln -sv /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql?? #创建软连接,方便以后升级

‘mysql’ -> ‘mysql-5.7.44-linux-glibc2.12-x86_64/’

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

2023-12-16T16:29:35.621700Z 1 [Note] A temporary password is generated for root@localhost: lm2fSl=GZ.sG?? #初始化会生成临时密码

就是这里没有my-default.cnf,不知道什么原因,求助

文章来源:https://blog.csdn.net/weixin_72583321/article/details/135040282
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。