首页 数据库 mysql

通过apt-get来安装MySQL


前言

在前的几篇文章中,我们分享了MySQL数据库使用编译好的二进制安装文件来安装MySQL数据库,同时还分享了使用MySQL的源码进行编译安装MySQL数据库。

在今天的文章中,我们来看一下另外一种安装方式:使用apt-get来安装MySQL数据库。

前面的文章中,通过yum来安装MySQL5.7是基于centos系统来实验,而此次使用apt-get,我们安装MySQL5.7是基于Ubuntu系统来实验。

准备Ubuntu环境

使用docker来运行一个Ubuntu镜像,如下:

docker run -it -d --name ubuntu-mysql --hostname ubuntu.mysqlserver -v /sys/fs/cgroup:/sys/fs/cgroup --privileged=true ubuntu:latest

容器启动后,如下所示:

  ~ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
714b1baa3875        ubuntu:latest       "/bin/bash"         28 hours ago        Up 28 hours                             ubuntu-mysql
  ~

使用如下命令进入容器:

➜  ~ docker exec -it ubuntu-mysql /bin/bash

关于Ubuntu

Ubuntu是Debian的一个衍生版本,所以它和Debian安装软件的方式一样,使用apt-get命令来安装。如下所示是Linux系统发行版列表:


Ubuntu系统的版本是以年和月作为版本号的。比如Ubuntu 20.10,代表是2020年10月份发布的。Ubuntu 19.04代表的是2019年4月份发布的。Ubuntu 18.10代表的是2018年10月份发布的。它每年发布2个版本,分别是每年的4月份和10月份。

另外一个是每一个Ubuntu发布的系统版本都有一个别名,也叫做代号。是以动物的名称来命名的,由一个形容词+一个动词组成,并且形容词和动词的第一个字母都相同,从Ubuntu 6.06开始,两个词的首字母按照英文字母表的排列顺序取用。

下面是Ubuntu发布的版本列表:


查看你的Ubuntu的版本,使用如下的方式来查看,从下面的输出可以看出,我们目前使用容器启动的这个Ubuntu系统它的版本是20.04,它的别名是focal,架构是X86_64

root@ubuntu:~# cat /etc/issue
Ubuntu 20.04.1 LTS \n \l

root@ubuntu:~# cat /proc/version
Linux version 4.19.76-linuxkit (root@4abe09437d05) (gcc version 8.3.0 (Alpine 8.3.0)) #1 SMP Tue May 26 11:42:35 UTC 2020
root@ubuntu:~# uname -a
Linux ubuntu.mysqlserver 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
root@ubuntu:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.1 LTS
Release:	20.04
Codename:	focal
root@ubuntu:~#

注意:如果提示找不到lsb_release命令,则可以使用apt-get install lsb_release -y命令来安装lsb_release命令,然后再尝试使用这个命令来查看Ubuntu系统的版本。

使用apt-get来安装MySQL

前面我们准备了一个Ubuntu最新的容器镜像,现在我们就基于这个运行容器镜像,来安装MySQL数据库。

修改系统的apt-get源

在安装之前,我们首先来修改一下Ubuntu的apt-get软件源。如果使用Ubuntu默认的apt-get源,由于是国外的网站,所以比较慢,我们把它修改为国内的几个镜像源。比如:中科大镜像源、清华大学镜像源、网易镜像源、阿里云镜像源。这里我们选择阿里的镜像源。

Ubuntu系统的apt-get软件源,在/etc/apt/sources.list配置文件中配置。我们需要修改这个配置文件中的内容来替换镜像源,在修改之前可以备份一下这个文件。

root@ubuntu:~# cp /etc/apt/sources.list /etc/apt/sources.list.bak

备份完成之后,我们去找阿里云的镜像源到底是什么,可以通过地址:https://developer.aliyun.com/mirror/ 来查找,参考如下截图看查看阿里云的镜像源。


阿里云的Ubuntu的apt-get源详细配地址参考下面的连接:

https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11KGYWPl

根据自己的Ubuntu系统的版本来选择对应的配置,因为我的Ubuntu系统版本是20.04(focal),所以我采用如下的配置,你根据自己的系统版本选择正确的配置源就可以了。因为我的Ubuntu连vim都没有安装,所以我采用echo xxx > /etc/apt/sources.list的方式把下的文件写入到source.list文件中,如果你的Ubuntu中有vim命令,你可以直接编辑vim中的文件,把里面的内容从全部删除,然后替换成下面的内容。

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

这里针对配置的源码的信息简单说明一下,ubuntu 软件源 main,restricted,universe,multiverse 的区别:

  • main:完全的自由软件。
  • restricted:不完全的自由软件。
  • universe:ubuntu官方不提供支持与补丁,全靠社区支持。
  • muitiverse:非自由软件,完全不提供支持和补丁。

修改完成apt-get源之后,记得执行如下的命令更新apt-get源,这样才会使用到新的apt-get 源。

root@ubuntu:/etc/apt# apt-get update

更完成之后,我们使用apt-get来安装wget命令,然后我们通过这个命令去下载MySQL官方的apt-get源。

root@ubuntu:/etc/apt# apt-get install wget -y

下载MySQL的apt-get源

从MySQL官网上下载MySQL使用的apt-get源,参考如下截图,地址为:https://dev.mysql.com/downloads/


然后进入如下页面,接着点击页面中的Download连接。


点解完Download之后,进入如下页面,我们不直接下载,复制链接地址,然后我们去安装MySQL的容器中去使用wget命令下载MySQL的apt-get源。


下载如下所示:

root@ubuntu:/etc/apt# wget https://dev.mysql.com/get/mysql-apt-config_0.8.16-1_all.deb

上面下载apt-get源文件中,默认是没有MySQL5.7版本的,这个apt-get源中只有8.0版本。所以如果你安装的不是MySQL8.0版本,那么你就需要去下面的连接中去下载历史版本的apt-get源。访问地址为:http://repo.mysql.com/apt/ubuntu/pool/mysql-apt-config/m/mysql-apt-config/,页面如下所示:


这里之所以选择8.14的这个apt-get源是因为我尝试了8.16和8.15,直到8.14才发现有MySQL5.7版本的apt-get源。8.16和8.15中都是默认使用的MySQL8.0版本。最终我为了安装MySQL5.7版本,所下载的MySQL5.7源如下:

root@ubuntu:/etc/apt# wget http://repo.mysql.com/apt/ubuntu/pool/mysql-apt-config/m/mysql-apt-config/mysql-apt-config_0.8.14-1_all.deb


安装MySQL的apt-get源

我们下载好MySQL的apt-get源之后,现在采用如下的命令来安装上它。然后才能基于这个源来安装MySQL数据库软件。

root@ubuntu:/etc/apt# dpkg -i mysql-apt-config_0.8.14-1_all.deb
Selecting previously unselected package mysql-apt-config.
dpkg: regarding mysql-apt-config_0.8.14-1_all.deb containing mysql-apt-config, pre-dependency problem:
 mysql-apt-config pre-depends on lsb-release
  lsb-release is not installed.

dpkg: error processing archive mysql-apt-config_0.8.14-1_all.deb (--install):
 pre-dependency problem - not installing mysql-apt-config
Errors were encountered while processing:
 mysql-apt-config_0.8.14-1_all.deb
root@ubuntu:/etc/apt#

发现遇到上面的错误之后,我们使用apt-get install lsb-release -y来安装这个软件包。

root@ubuntu:/etc/apt# apt-get install lsb-release -y

此时,当我们再次像是来安装MySQL的apt-get源文件的时候,又发现出现如下的错误:

root@ubuntu:/etc/apt# dpkg -i mysql-apt-config_0.8.14-1_all.deb
dpkg: regarding mysql-apt-config_0.8.14-1_all.deb containing mysql-apt-config, pre-dependency problem:
 mysql-apt-config pre-depends on gnupg
  gnupg is not installed.

dpkg: error processing archive mysql-apt-config_0.8.14-1_all.deb (--install):
 pre-dependency problem - not installing mysql-apt-config
Errors were encountered while processing:
 mysql-apt-config_0.8.14-1_all.deb
root@ubuntu:/etc/apt#

我们使用命令apt-get install gnupg -y来安装上面提示确实的软件包,如下所示:

root@ubuntu:/etc/apt# apt-get install gnupg -y

然后我们再次尝试安装MySQL的apt-get源,会出现如下的安装页面,我们选自6 ubuntu disco这个系统版本。


上面我们之所以选择6 ubuntu disco,是因为目前apt-get源,支持MySQL5.7的最新的Ubuntu系统是disco版本。所以在这里,我们选择了这个版本。参考页面地址为:http://repo.mysql.com/apt/ubuntu/conf/distributions,通过这个连接,可以查看MySQL官方给准备的apt-get源中每一个源中包含的MySQL版本和对应的Ubuntu系统版本之间的关系。


我们选择6之后,会进入选择MySQL版本页面,这里我们选择1,然后在1的子菜单中,选择MySQL5.7的版本。在选择4。这里贴出选择的过程如下:


安装配置好MySQL的apt-get源之后,我们这里要更新一下apt-get的源。如下所示:

root@ubuntu:/etc/apt# apt-get update
Hit:1 http://mirrors.aliyun.com/ubuntu focal InRelease
Get:2 http://mirrors.aliyun.com/ubuntu focal-security InRelease [109 kB]
Get:3 http://mirrors.aliyun.com/ubuntu focal-updates InRelease [114 kB]
Get:4 http://mirrors.aliyun.com/ubuntu focal-proposed InRelease [267 kB]
Get:5 http://mirrors.aliyun.com/ubuntu focal-backports InRelease [101 kB]
Get:6 http://mirrors.aliyun.com/ubuntu focal-security/main Sources [153 kB]
Get:7 http://repo.mysql.com/apt/ubuntu disco InRelease [19.2 kB]
Get:8 http://mirrors.aliyun.com/ubuntu focal-security/universe amd64 Packages [663 kB]
Get:9 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 Packages [603 kB]
Get:10 http://mirrors.aliyun.com/ubuntu focal-updates/universe amd64 Packages [923 kB]
Get:11 http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 Packages [1007 kB]
Get:12 http://mirrors.aliyun.com/ubuntu focal-proposed/main Sources [48.9 kB]
Get:13 http://repo.mysql.com/apt/ubuntu disco/mysql-5.7 Sources [903 B]
Get:14 http://mirrors.aliyun.com/ubuntu focal-proposed/restricted Sources [7420 B]
Get:15 http://mirrors.aliyun.com/ubuntu focal-proposed/restricted amd64 Packages [51.3 kB]
Get:16 http://mirrors.aliyun.com/ubuntu focal-proposed/main amd64 Packages [154 kB]
Get:17 http://repo.mysql.com/apt/ubuntu disco/mysql-tools amd64 Packages [1922 B]
Get:18 http://repo.mysql.com/apt/ubuntu disco/mysql-apt-config amd64 Packages [564 B]
Get:19 http://repo.mysql.com/apt/ubuntu disco/mysql-5.7 amd64 Packages [5681 B]
Fetched 4230 kB in 4s (1001 kB/s)
Reading package lists... Done
root@ubuntu:/etc/apt#

查看MySQL的apt-get源

我们在前面配置好了MySQL的apt-get源,接下来验证一下配置是否正确。参考如下命令来查看:

root@ubuntu:/etc/apt# apt-cache policy mysql-server
mysql-server:
  Installed: (none)
  Candidate: 8.0.23-0ubuntu0.20.04.1
  Version table:
     8.0.23-0ubuntu0.20.04.1 500
        500 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 Packages
        500 http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 Packages
     8.0.19-0ubuntu5 500
        500 http://mirrors.aliyun.com/ubuntu focal/main amd64 Packages
     5.7.28-1ubuntu19.04 500
        500 http://repo.mysql.com/apt/ubuntu disco/mysql-5.7 amd64 Packages
root@ubuntu:/etc/apt#

可以看到此时的apt-get源中,包含了5.7的版本。这里需要注意一下:此时我们安装的MySQL5.7版本的小版本号是5.7.28,如果要安装MySQL5.7.33版本,需要在上面安装MySQLapt-get源的时候,在选择系统的版本的时候,需要选择ubuntu bionic版本就可以了。

如果此时你发现不想安装这个版本的MySQL,你可以通过执行如下的命令来情况MySQL的apt-get源,然后重新执行dpkg -i xx的命令来安装或选择新的apt-get文件。

apt-get purge mysql-apt-config

安装MySQL数据库

现在可以安装MySQL数据库了,使用如下命令来安装MySQL数据库,因为此时的apt-get源中,既有基于阿里的镜像源总的8.0版本的MySQL,又有既有MySQL官网的5.7版本的MySQL源,所以此时我们在安装的时候,需要指定一个我们要安装的5.7版本的镜像源的名称5.7.28-1ubuntu19.04

root@ubuntu:/etc/apt# apt-get install mysql-server=5.7.28-1ubuntu19.04 mysql-community-server=5.7.28-1ubuntu19.04 mysql-client=5.7.28-1ubuntu19.04 -y

此时会去MySQL官网下载MySQL安装文件,我们静静地等待10-20分钟就可以下载成功了。

下次成功后它会自动安装,在安装的过程中,它会弹出输入MySQL数据库中root用户的密码窗口,此时我们看到弹出对话框之后,输入数据库的root用户的密码即可,需要输入两次密码。输入完成之后,就会马上安装成功。

启动MySQL数据库

使用如下的命令来启动、查看、停止、重启MySQL数据库:

service mysql start
service mysql status
service mysql stop
service mysql restart

启动和查看结果如下:

root@ubuntu:/etc/apt# service mysql start
/etc/init.d/mysql: line 70: /lib/apparmor/profile-load: No such file or directory
..
 * MySQL Community Server 5.7.28 is started
root@ubuntu:/etc/apt# service mysql status
 * MySQL Community Server 5.7.28 is running
root@ubuntu:/etc/apt#

验证MySQL数据库

现在我们登录MySQL数据库看能否正常访问,同下面的输出可以看到MySQL可以正常提供服务,并且版本使我们安装的5.7.28版本。

root@ubuntu:/etc/apt# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.28 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

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> select version();
+-----------+
| version() |
+-----------+
| 5.7.28    |
+-----------+
1 row in set (0.00 sec)

mysql> create database mydb1 default charset utf8mb4;
Query OK, 1 row affected (0.00 sec)

mysql> use mydb1;
Database changed
mysql> create table tb1(id int);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into tb1 values(1),(3),(5),(7),(9);
Query OK, 5 rows affected (0.02 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select * from tb1;
+------+
| id   |
+------+
|    1 |
|    3 |
|    5 |
|    7 |
|    9 |
+------+
5 rows in set (0.00 sec)

mysql>



相关推荐