前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL从0到1学习002--Linux安装MySQL8.0

MySQL从0到1学习002--Linux安装MySQL8.0

原创
作者头像
兔云小新LM
发布于 2023-04-11 14:40:32
发布于 2023-04-11 14:40:32
4820
举报

上一篇,提到了我为什么要写MySQL系列教程的原因。这一篇,我们就来开始MySQL系列学习的第一篇,MySQL的安装。MySQL的安装有很多中方式,本文重点实践在Centos操作系统上实现源码的安装。这里也总结一下,我个人知道的一些安装方式。

1、如果是在Mac操作系统,你可以直接到官方网站下载.dmg格式的安装包进行安装,也可以使用包管理命令(port、brew)进行安装。同时也你可以使用docker进行安装。

2、如果你是Windows,你可以直接到官方网站下载.msi格式的安装包进行安装,也可以使用一些集成环境,例如PHPStudy。同时你也可以使用docker进行安装。

3、如果你是Linux,你可以使用包管理工具(yum)安装,或者使用.rpm包安装,同时你也可以使用二进制文件安装,或者使用docker进行安装。

不同的安装方式,优缺点其实也有所不同。

1、例如你用包管理命令安装,这种方式非常简单,包管理工具一般会自动帮你解决依赖问题,不需要手动的处理这些问题。同时卸载也比较方便。

2、如果你是Linux安装,采用的.rpm格式,这种稍微麻烦一些,需要你手动的处理包依赖,同时你卸载也比较繁琐,你要手动的去卸载一些依赖包。也不推荐使用这种方式。

3、由于docker、k8s的广泛使用,现在流行的安装方式,应该是这种了。直接写好.dockerfile文件,可以实现跨平台的安装。

4、本章主要是学习MySQL的安装,因此我们采用二进制的方式进行安装,熟悉整个安装流程。

本系列教程采用的是MySQL8.0的版本。这一点可能需要大家注意一下。

对于MySQL8.0的安装,本文演示两种安装方式,一种是二进制方式安装,另外一种是采用docker安装。

Linux安装

Linux我采用的是centos7的版本,本地搭建的一个虚拟机。你需要根据自己的情况,去搭建这样的一套学习环境,这里就演示安装虚拟机的过程了。如果遇到什么问题,你也可以单独找我,协助解决。我下载的centos7,内置了MariaDB,因此我们实现需要把MariaDB卸载了。

卸载mariadb

你可以使用如下的命令,查看本地是否安装了MariaDB。如果没有显示下面的文件,表示没有安装,省略掉下面的卸载命令即可。

代码语言:shell
AI代码解释
复制
# 查看MariaDB是否安装
[root@192 yum.repos.d]# rpm -qa|grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64

# 卸载MariaDB
[root@192 yum.repos.d]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

# 检测卸载结果,输出的内容是空则表示卸载成功
[root@192 yum.repos.d]# rpm -qa|grep mariadb

下载二进制文件

要下载二进制文件,可以直接到MySQL官方进行下载,具体的地址是。在界面上根据下图的示例,进行下载即可。

你也可以使用下面的链接进行下载,这也是我本地使用的链接地址。

代码语言:shell
AI代码解释
复制
cd ~ && wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.30-el7-x86_64.tar

下载好之后,把该文件复制到/usr/local目录下面,然后对其解压。

代码语言:shell
AI代码解释
复制
# cp mysql-8.0.30-el7-x86_64.tar /usr/local

# 解压
tar -xvf mysql-8.0.30-el7-x86_64.tar

# 查看解压文件
-rw-r--r--. 1 7161 31415 492490461 77 2022 mysql-8.0.30-el7-x86_64.tar.gz
-rw-r--r--. 1 7161 31415  22006040 77 2022 mysql-router-8.0.30-el7-x86_64.tar.gz
-rw-r--r--. 1 7161 31415 305543348 77 2022 mysql-test-8.0.30-el7-x86_64.tar.gz

通过解压,我们会得到上面的3个压缩包,重点我们关注mysql-8.0.30-el7-x86_64.tar.gz这个文件即可,其他的两个,我们暂且不管。

解压好之后,我们再对mysql-8.0.30-el7-x86_64.tar.gz文件进行解压。

代码语言:shell
AI代码解释
复制
# 解压
tar -xvf mysql-8.0.30-el7-x86_64.tar.gz

# 对文件夹进行重命名
mv mysql-8.0.30-el7-x86_64 mysql

# 查看文件目录
cd mysql && ll
drwxr-xr-x.  2 7161 31415   4096 77 2022 bin
drwxr-xr-x.  2 7161 31415     55 77 2022 docs
drwxr-xr-x.  3 7161 31415   4096 77 2022 include
drwxr-xr-x.  6 7161 31415    201 77 2022 lib
-rw-r--r--.  1 7161 31415 287624 77 2022 LICENSE
drwxr-xr-x.  4 7161 31415     30 77 2022 man
-rw-r--r--.  1 7161 31415    666 77 2022 README
drwxr-xr-x. 28 7161 31415   4096 77 2022 share
drwxr-xr-x.  2 7161 31415     77 77 2022 support-files

# 创建数据目录(一定注意data目录是放在mysql目录下的)
mkdir data

用户权限

对MySQL的基本操作,我们就先执行到这里,接下来创建MySQL用户组、用户。

1、创建MySQL用户组。

代码语言:shell
AI代码解释
复制
groupadd mysql

2、创建MySQL用户。

代码语言:shell
AI代码解释
复制
useradd -r -g mysql mysql

3、更改mysql目录的用户组和用户权限。

代码语言:shell
AI代码解释
复制
chown -R mysql:mysql mysql
chmod -R 755 mysql

初始化安装

通过上面一系列的操作,MySQL安装的基本操作也都准备好了,接下来我们就正式进入到MySQL的安装环境。这几步操作,需要格外的注意。

直接使用如下的命令,来初始化服务,在这个过程中MySQL会生成一个默认的密码,这个密码需要记住,后续登录到MySQL会使用到。

代码语言:shell
AI代码解释
复制
[root@192 bin]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
2023-04-07T17:14:35.743452Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.30) initializing of server in progress as process 8353
2023-04-07T17:14:35.753503Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-04-07T17:14:36.629899Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-04-07T17:14:38.277736Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: D(v>gZT0nOFb

通过上面的命令,如果没出什么错误,就表示初始化完成。注意到最后一行的末尾,root@localhost: D(v>gZT0nOFb。MySQL为我们生成了一个初始密码,密码是D(v>gZT0nOFb,你在初始化的时候不一定是这个密码,根据自己的实际情况来。

创建配置文件

MySQL初始化完成之后,接下来我们创建一个配置文件(vim /etc/my.cnf)。配置文件的内容如下,你可以根据自己的情况来编写,推荐直接使用下面的配置。

代码语言:shell
AI代码解释
复制
[client]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
default-character-set = utf8mb4

[mysql]  
default-character-set = utf8mb4

[mysqld]  
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'

port = 3306
socket = /usr/local/mysql/data/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
datadir = /usr/local/mysql/data
lower_case_table_names=1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

创建好之后,需要对该文件进行配置权限,否则MySQL没权限执行该文件。

代码语言:shell
AI代码解释
复制
chmod 777 /etc/my.cnf

为了后续更加的方便操作MySQL,可以为其创建软连接。

代码语言:shell
AI代码解释
复制
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/mysql.sock /var/mysql.sock

设置开机启动

为了减少服务器重启之后,每次都要手动的去启动MySQL,这里设置开机启动。依次执行下面的每一条命令。

代码语言:shell
AI代码解释
复制
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

mysqld         	0:关	1:关	2:开	3:开	4:开	5:开	6:关
netconsole     	0:关	1:关	2:关	3:关	4:关	5:关	6:关
network        	0:关	1:关	2:开	3:开	4:开	5:开	6:关

如果看到3、4和5选项都显示开,表示设置成功。

服务管理

下面罗列对MySQL服务的管理命令,由于centos7和centos6,在服务管理的命令有所改变,6的版本是使用service,7的版本是使用systemctl,这里需要注意一下。

1、启动服务。

代码语言:shell
AI代码解释
复制
# 6版本
service mysql start
# 7版本
systemctl start mysql

2、重启服务

代码语言:shell
AI代码解释
复制
# 6版本
service mysql restart
# 7版本
systemctl restart mysql

3、停止服务

代码语言:shell
AI代码解释
复制
# 6版本
service mysql stop
# 7版本
systemctl stop mysql

4、查看服务状态

代码语言:shell
AI代码解释
复制
# 6版本
service mysql status
# 7版本
systemctl status mysql

操作mysql

接下来,我们就正式登录到MySQL,去执行一些基础操作。

1、启动服务

代码语言:shell
AI代码解释
复制
systemctl restart mysql

2、登录MySQL服务

代码语言:shell
AI代码解释
复制
[root@192 bin]# mysql -uroot -p
mysql: [Warning] World-writable config file '/etc/my.cnf' is ignored.
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.30 MySQL Community Server - GPL

Copyright (c) 2000, 2022, 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>

这里默认的密码,就是上面在初始化安装过程中MySQL自动生成的密码,输入密码即可。

3、修改默认的密码

代码语言:shell
AI代码解释
复制
alter user 'root'@'localhost' identified by '123456';
set password for root@localhost = '123456';

上面的两种方式,任意选一种即可。

4、设置远程连接

如果你想开启MySQL中的root账户远程连接全新啊,你可以使用如下的方式。这里不推荐开启,root是MySQL中的超级管理员,开启可能会存在安全风险,这里为了做演示,故开启远程连接模式。

代码语言:shell
AI代码解释
复制
mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;

5、示例创建

这里通过创建一个数据库和数据表,用来演示。

代码语言:shell
AI代码解释
复制
mysql> create database demo;
Query OK, 1 row affected (0.05 sec)

mysql> use demo;
Database changed
mysql> create table demo ( id int primary key, name varchar(32) not null);
Query OK, 0 rows affected (0.03 sec)

mysql> show tables;
+----------------+
| Tables_in_demo |
+----------------+
| demo           |
+----------------+
1 row in set (0.00 sec)

到此为止,MySQL在Linux上的安装也就正式完成啦。后续的章节,也都是基于该环境进行操作。

Docker安装

上面演示完对Linux安装,接下来就简单演示一下使用docker安装,推荐使用官网提供的Docker镜像安装。由于官方镜像的使用文档写的非常详细了,我这里就不具体展示,做一个简单的演示即可。

1、创建一个docker-compose.yml的文件。并写入如下内容:

代码语言:shell
AI代码解释
复制
version: '3.1'

services:

  db:
    image: mysql
    # NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password
    # (this is just an example, not intended to be a production configuration)
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

  adminer:
    image: adminer
    restart: always
    ports:
      - 8081:8080

2、执行docker-compose.yml,启动服务

代码语言:shell
AI代码解释
复制
$ docker-compose up -d
[+] Running 2/2
 ⠿ Container root-db-1       Running 0.0s
 ⠿ Container root-adminer-1  Started 1.0ss

3、查看服务启动状态

代码语言:shell
AI代码解释
复制
$ docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS          PORTS                    NAMES
7310e996a435   adminer          "entrypoint.sh php -…"   5 seconds ago    Up 3 seconds    0.0.0.0:8081->8080/tcp   root-adminer-1

通过命令输出的结果,可以看到容器已经启动成功了。

课后练习

1、MySQL如果忘记root账户密码,该怎么解决?

2、MySQL配置文件启动的顺序是什么样的?

3、MySQL服务启动的方式有哪几种?每种方式之间有什么区别?

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
centos7安装mysql8.0(包含安装包)
安装MySQL 这里我安装在/usr/local目录下 cd /usr/local/ wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.30-el7-x86_64.tar 如果下载较慢可以使用本地的
高大北
2023/06/23
5280
MySQL 8.0.19 Linux平台安装 Part 2
cat /data/mysql/data/mysql-error.log |grep password
bsbforever
2020/08/18
4470
Centos7下MySQL 8.0安装与卸载
1、下载 https://dev.mysql.com/downloads/mysql/ 2、安装 2.1 解压缩 [root@node1 app]# ll 总用量 817720 drwxr-xr-x. 8 10143 10143 273 6月 9 09:58 jdk1.8.0_301 -rw-r--r-- 1 root root 837345280 11月 11 06:25 mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar [root@node1
程裕强
2021/11/15
1.5K0
Centos7下MySQL 8.0安装与卸载
Centos 7下安装mysql
·mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
挑战者
2018/05/29
2.8K2
Centos 7下安装mysql
CentOS 7源码编译安装MySQL 8.0
[root@mysql etc]# cat /etc/RedHat-release CentOS Linux release 7.3.1611 (Core)
星哥玩云
2022/08/16
1.3K0
centos 7 安装mysql这个版本的数据库是没有my.cnf需要创建my.cnfsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
centos 7 安装mysql 1.安装前的准备 下载地址 https://www.mysql.com/downloads/ 点击下载mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz 1.1 准备mysql的安装包 mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz 1.2 放到linux系统上: 命令: #放到在/usr/local目录下 cd /usr/local #上传命令选择安装包 rz #解压缩包 tar -zxvf m
挑战者
2018/06/29
5.4K0
CentOS7安装MySQL8
本文使用的是当前最新8.0.30版本,如果需要安装的版本比8.0.30高或者低,只要是8.0.*版本,那就可以按照本文说明安装,基本不会有任何问题
郑郑SunUp
2025/01/01
1440
干货分享!!!
一、在官网现在你想要的版本的nginx的包,小编使用的是nginx-1.21.6.tar.gz版本的包
Hunter@Miracle
2022/08/26
2720
Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
在日常的linux运维工作中,大数据量备份与还原,始终是个难点。关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex。innobackupex和mysqldump都可以对mysql进行热备份的,mysqldump对mysql的innodb的备份可以使用single-transaction参数来开启一个事务,利用innodb的mvcc来不进行锁表进行热备份,mysqldump备份是逻辑备份,备份出来的文件是sql语句,所以备份和恢复的时候很慢,但
洗尽了浮华
2018/01/23
2.3K0
11.3/11.4/11.5 MySQL安装
MySQL目录概要 MySQL的几个常用安装包:rpm、源码、二进制免编译 cd /usr/local/src //切换到下载源码包的目录 wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz //解压 mv mysql-5.6.35-linux-glibc2.
运维小白
2018/02/06
7160
【Linux】安装MySQL
需要通过rpm相关指令,来查询当前系统中是否存在已安装的mysql软件包,执行指令如下:
陶然同学
2023/03/02
1.7K0
【Linux】安装MySQL
MySQL数据库入门——多实例配置
前面介绍了相关的基础命令操作,所有的操作都是基于单实例的,mysql多实例在实际生产环境也是非常实用的,因为必须要掌握
民工哥
2020/09/16
4.1K0
mysql8安装
docker run -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORD=hadoop -d mysql:8.0.21
summerking
2022/09/19
9790
mysql8安装
centos7系统安装mysql8.0完整步骤
Select Operating System: 选择 Red Hat ,CentOS 是基于红帽的,Select OS Version: 选择 linux 7
用户4988085
2021/07/20
13.2K1
Linux 中 Discuz 部署
冷影玺
2023/10/11
4890
Linux 中 Discuz 部署
linux_day02(安装mysql 8.0数据库和远程登陆)
winscp软件(上传软件到Linux服务器中,alt+p,还可以下载Linux的软件到本地)
上分如喝水
2021/08/16
9900
linux_day02(安装mysql 8.0数据库和远程登陆)
centos 7.5 安装 mysql 5.6
CentOS7默认取消了MySQL源,可以安装MariaDB。不过有些人有些事需要去解释MariaDB和MySQL的关系等等,有时候干脆就直接安装MySQL了,不去解释他们之间的关系了。 因为MySQL5.7存在问题,需要在CentOS7下安装MySQL5.6
程裕强
2022/05/06
1.8K0
centos 7.5 安装 mysql 5.6
MySQL多实例安装部署
MySQL多实例安装部署 1、MySQL多实例概念 多实例就是在一台服务器上同时开启多个不同的数据库服务端口(例如3306、3307),同时运行多个MYSQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。 优点 MySQL多实例,可以通过多个端口向用户提供服务,充分利用一台服务器的闲置资源 缺点 无论是多少个端口提供服务,但始终使用的是一台服务器的资源,所以当访问量过大时,依然存在高并发的问题 2、mysql 多实例部署 2.1 软件下载 #下载二进制格式的my
Alone-林
2022/08/20
1.4K0
Jenkins+Gitlab+Nginx+SonarQube+Maven编译Java项目自动发布与基于tag版本回退
 SonarQube是一个开源的代码质量管理系统,用于检测代码中的错误,漏洞和代码规范。它可以现有的Gitlab、Jenkins集成,以便在项目拉取后进行连续的代码检查。
非著名运维
2022/06/22
8450
Jenkins+Gitlab+Nginx+SonarQube+Maven编译Java项目自动发布与基于tag版本回退
linux环境搭建mysql5.7总结
以下安装方式,在阿里云与腾讯云服务器上都测试可用。 一、进入到opt目录下,执行:
朱季谦
2021/10/25
6110
相关推荐
centos7安装mysql8.0(包含安装包)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档