在ECS实例的Ubuntu系统中安装MySQL5.7

2019年1月20日寒假大数据师资培训班

返回《在阿里云中搭建大数据实验环境》首页
提示:本教程是一个系列文章,请务必按照本教程首页中给出的各个步骤列表,按照先后顺序一步步进行操作,本博客假设你已经顺利完成了之前的操作步骤。
MySQL是非常流行的关系数据库,在企业中得到了广泛的应用,大数据应用中,会涉及到Spark和MySQL之间的交互,以及Hadoop和MySQL之间的交互。本博客介绍如何在在ECS实例的Ubuntu系统中安装MySQL。

查看Ubuntu14.04系统已经默认安装的MySQL版本

如果采用阿里云ECS提供的Ubuntu14.04公共镜像,里面已经自带了MySQL5.5,需要升级到5.7版本。
注意,如果你的Ubuntu系统是16.04版本,则不需要参考本博客,请直接阅读《Ubuntu安装MySQL及常用操作》完成MySQL5.7的安装。本博客假设你的系统是Ubuntu14.04。
现在使用笔记本电脑,使用用户名linziyu,通过VNC远程连接到阿里云ECS实例的Ubuntu系统,然后,打开一个终端,现在我们可以尝试一下,启动MySQL服务进程,命令如下:

sudo service mysql restart

会显示类似如下的启动信息:

mysql stop/waiting
mysql start/running, process 27323

然后,使用如下命令查看启动后的信息:

sudo netstat -tap | grep mysql

如果能够显示MySQL节点处于LISTEN状态的如下信息,则表示启动成功。

tcp        0      0 localhost:mysql         *:*                     LISTEN      27323/mysqld 

显示上面信息以后,可以按键盘的“Ctrl+C”,返回到命令行提示符状态。

然后,使用如下命令启动进入MySQL Shell交互式执行界面:

mysql -u root -p

然后,会提示你输入密码,实际上,我们根本不知道Ubuntu默认安装好的MySQL的root用户的密码,所以,你随便输入一个密码以后,访问会被拒绝,显示如下信息:

Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

所以,一定要想办法找到Ubuntu14.04默认安装的MySQL的root用户密码,方法如下:
请使用如下命令打开文件/etc/mysql/debin.cnf:

sudo vim /etc/mysql/debian.cnf

可以看到,该文件内容如下:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = Z7W76fH2arjbWdN6
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = Z7W76fH2arjbWdN6
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

在上面这个文件中,user = debian-sys-maint这个语句设置了用户名,password = Z7W76fH2arjbWdN6这个语句就是设置了密码是Z7W76fH2arjbWdN6。
所以,下面我们使用debian-sys-maint这个用户名和密码登录MySQL:

linziyu@iZbp11gznj7n38xkztu64dZ:/usr/local$ mysql -u debian-sys-maint -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 42
Server version: 5.5.59-0ubuntu0.14.04.1 (Ubuntu)

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

可以看到,使用debian-sys-maint这个用户名和密码成功登录了MySQL数据库,进入了MySQL Shell交互式执行环境,可以看到MySQL数据库的版本是5.5.59。
下面,我们在MySQL Shell交互式执行环境下执行如下命令创建root用户名和密码:

mysql>set password for 'root'@'localhost' = password('123456');
Query OK, 0 rows affected (0.00 sec)

这条SQL语句,就设置了可以登录MySQL的用户名root(注意,这个root用户名不是Ubuntu系统的root用户),它的登录密码是123456(你可以修改成你的密码)。
然后,执行exit命令退出当前的MySQL Shell,如下所示:

mysql> exit
Bye

然后,在终端Linux Shell环境中,使用用户名root和密码重新进入MySQL Shell交互式执行环境,命令如下:

mysql -u root -p

这时系统会提示你输入密码,你只要输入刚才root用户的密码,就可以进入MySQL Shell交互式执行环境了。
如果MySQL5.5版本能够满足你的需求的话,其实,现在就可以使用MySQL了。但是,还是建议升级到MySQL5.7版本。

删除Ubuntu14.04中的MySQL5.5版本

(1)删除客户端服务器

sudo apt-get autoremove --purge mysql-server-5.5
sudo apt-get autoremove --purge mysql-client-5.5
sudo apt-get remove mysql-common 

上述语句执行时,如果系统提示“y/n”让你选择,就输入y就可以。

(2)清理残留数据

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

下载MySQL5.7安装包

(1)第1种下载方式:到MySQL官网下载安装包
在自己的笔记本电脑中访问MySQL官网,如下图所示:

在网页中,在“MySQL Community Server 5.7.21”这个区域,在“Select Operating System:”这个下拉列表框中选择“Ubuntu”,在“Select OS Version:”的下拉列表框中选择“Ubuntu Linux 14.04(x86,64bit)”。在“Download Packages:”这个区域,选择“DEB Bundle (mysql-server_5.7.21-1ubuntu14.04_amd64.deb-bundle.tar)”,然后,点击右边的“Download”按钮,会出现如下界面:

在上图界面中,可以看到当前正在下载的文件是mysql-server_5.7.21-1ubuntu14.04_amd64.deb-bundle.tar,然后,可以直接点击“No thanks, just start my download”,开始下载。

(2)第2种下载方式:到百度云盘下载安装包
在自己的笔记本电脑中,点击这里访问百度云盘下载mysql-server_5.7.21-1ubuntu14.04_amd64.deb-bundle.tar文件,下载到自己笔记本电脑,然后使用FTP软件上传到阿里云ECS实例的Ubuntu系统的“/home/linziyu/Downloads”目录下(点击这里阅读FTP连接ECS的方法)。

解压MySQL5.7安装包

接下来,在自己的笔记本电脑中,使用VNC Viewer软件连接到阿里云ECS实例的Ubuntu系统(阅读VNC使用方法),在远程的Ubuntu系统中打开一个命令行终端(假设当前登录用户为linziyu),然后,执行如下命令:

cd ~
cd Downloads
mkdir mysql
sudo tar -xvf ~/Downloads/mysql-server_5.7.21-1ubuntu14.04_amd64.deb-bundle.tar -C ~/Downloads/mysql

注意,由于我们的文件格式是tar,不是tar.gz,所以,在解压时,不能使用“tar -zxvf”,只能使用“tar -xvf”。
然后,可以进入到~/Downloads/mysql这个目录,可以看到已经解压得到如下文件:

mysql-community-client_5.7.21-1ubuntu14.04_amd64.deb
mysql-community-test_5.7.21-1ubuntu14.04_amd64.deb
mysql-community-server_5.7.21-1ubuntu14.04_amd64.deb
mysql-client_5.7.21-1ubuntu14.04_amd64.deb
libmysqlclient-dev_5.7.21-1ubuntu14.04_amd64.deb
mysql-common_5.7.21-1ubuntu14.04_amd64.deb
libmysqld-dev_5.7.21-1ubuntu14.04_amd64.deb
libmysqlclient20_5.7.21-1ubuntu14.04_amd64.deb
mysql-community-source_5.7.21-1ubuntu14.04_amd64.deb
mysql-testsuite_5.7.21-1ubuntu14.04_amd64.deb
mysql-server_5.7.21-1ubuntu14.04_amd64.deb

安装MySQL5.7

cd ~/Downloads/mysql
sudo apt-get install libaio1
sudo dpkg -i mysql-common_5.7.21-1ubuntu14.04_amd64.deb
sudo dpkg -i libmysqlclient20_5.7.21-1ubuntu14.04_amd64.deb
sudo dpkg -i libmysqlclient-dev_5.7.21-1ubuntu14.04_amd64.deb
sudo dpkg -i libmysqld-dev_5.7.21-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-community-client_5.7.21-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-client_5.7.21-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-community-server_5.7.21-1ubuntu14.04_amd64.deb  #安装此包的时候会出现 错误:未安装软件包libmecab2,解决方法见下面
sudo dpkg -i mysql-server_5.7.21-1ubuntu14.04_amd64.deb


sudo dpkg -i mysql-community-source_5.7.21-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-community-test_5.7.21-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-testsuite_5.7.21-1ubuntu14.04_amd64.deb

注意,上面安装mysql-community-server_5.7.21-1ubuntu14.04_amd64.deb包的时候会出现 错误:未安装软件包libmecab2。请在遇到这个错误以后,执行如下命令:

sudo apt-get -f install

另外,在安装mysql-community-server_5.7.21-1ubuntu14.04_amd64.deb时,还会弹出如下界面提示,只要按键盘的回车键选择OK即可。

然后,如下图所示,还会提示设置MySQL的root用户(不是Ubuntu的root用户)的密码,你要设置该密码,系统会提示你输入两次密码进行确认:

这样,安装就完成了,这时,MySQL已经被启动,需要使用如下命令去停止MySQL服务:

sudo service mysql stop

然后,使用如下命令去启动MySQL服务:

sudo service mysql start

可以看到如下启动信息:

* MySQL Community Server 5.7.21 is started

然后,使用如下命令可以查看MySQL节点处于LISTEN状态。

linziyu@iZbp11gznj6m26xkztu64dZ:/home/hadoop/download/mysql$ sudo netstat -tap | grep mysql
tcp        0      0 localhost:mysql         *:*                     LISTEN      10708/mysqld 

显示上面信息以后,可以按键盘的“Ctrl+C”,返回到命令行提示符状态。

然后,使用如下命令启动进入MySQL Shell交互式执行界面:

mysql -u root -p

输入刚才你在安装MySQL的时候创建的root用户的密码,就可以进入MySQL Shell交互式执行环境,屏幕上显示的信息如下所示:

linziyu@iZbp11gznj7n38xkztu64dZ:/home/hadoop/download/mysql$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21 MySQL Community Server (GPL)

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

然后,在MySQL Shell中执行如下命令:

mysql> show variables like "char%";
ERROR 1146 (42S02): Table 'performance_schema.session_variables' doesn't exist

会发现,会出现错误提示,这个问题需要解决,因为,我们在后面需要使用show variables like “char%”这个语句。
为了解决这个错误,请执行exit命令退出当前的MySQL Shell,如下所示:

mysql> exit
Bye

接下来,要执行如下操作:
···bash
mysql_upgrade -u root -p –force
···
然后使用如下命令重新启动MySQL数据库:

sudo service mysql restart

然后,再次使用如下命令启动进入MySQL Shell交互式执行界面:

mysql -u root -p

然后,在MySQL Shell中执行如下命令:

mysql> show variables like "char%";

这时,就可以正常得到如下信息:

mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

在上面信息中可以看到,character_set_server的字符编码是latin1,后面如果使用sqoop向MySQL导入中文时,会出现乱码问题,所以,现在就可以修改编码格式。请输入exit命令退出MySQL Shell交互式执行环境。
请在Ubuntu终端窗口,执行如下命令:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]下添加一行character_set_server=utf8,如下所示:

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
character_set_server=utf8
# By default we only accept connections from localhost
bind-address    = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

然后保存该文件并退出vim编辑器。

然后使用如下命令重新启动MySQL数据库:

sudo service mysql restart

然后,再次使用如下命令启动进入MySQL Shell交互式执行界面:

mysql -u root -p

然后,在MySQL Shell中执行如下命令:

mysql> show variables like "char%";

这时,可以得到如下信息:

mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

在上面信息中可以看到,character_set_server的字符编码是utf8,这样,以后使用sqoop向MySQL导入中文时,就不会出现乱码问题。

MySQL数据库的常用操作

我们实验室已经在另外一篇博客中给出了MySQL数据库的常用操作,请点击这里阅读

下载安装MySQL连接驱动程序

MySQL数据库安装成功以后,我们经常需要在程序中通过JDBC访问MySQL数据库,因此,就需要安装MySQL数据库的JDBC驱动程序。
(1)第一种下载方式:从MySQL官网下载驱动程序
请在自己的笔记本电脑中,从MySQL官网下载MySQL驱动JAR包(两种压缩格式均可,笔者下载的是.tar.gz压缩格式)。
(2)第二种下载方式:从百度云盘下载驱动程序
请在自己的笔记本电脑中,可以点击这里到百度云盘下载MySQL连接驱动程序mysql-connector-java-5.1.40.tar.gz

然后,参考之前的FTP使用指南,在笔记本电脑中,使用FTP软件,使用用户名linziyu连接阿里云ECS实例,把mysql-connector-java-5.1.40.tar.gz这个压缩格式文件上传到远程的阿里云ECS实例的Ubuntu系统中,可以上传到Ubuntu系统的“/home/linziyu/Downloads/”目录下。

根据本教程前面博客介绍的方法,采用用户名linziyu,使用Putty连接ECS中的Ubuntu系统,进入命令行界面,或者也可以使用VNCViewer连接ECS中的Ubuntu系统打开“终端”进入命令行界面。总之,一定要进入命令行界面,这样可以在里面输入Shell命令,来安装mysql-connector-java-5.1.40.tar.gz。

接下来,在自己的笔记本电脑中,使用VNC Viewer软件连接到阿里云ECS实例的Ubuntu系统(阅读VNC使用方法),在远程的Ubuntu系统中打开一个命令行终端(假设当前登录用户为linziyu),然后,执行如下命令:

cd ~
sudo tar -zxvf ~/Downloads/mysql-connector-java-5.1.40.tar.gz -C /usr/local

然后,进入/usr/local目录:

cd /usr/local
ls

可以看到已经解压缩得到一个新的目录/usr/local/mysql-connector-java-5.1.40,这里面就包含了MySQL数据库的JDBC连接驱动程序JAR包。

使用如下命令,修改该目录的权限:

cd /usr/local
sudo chown -R linziyu:linziyu ./mysql-connector-java-5.1.40

至此,就顺利完成了MySQL数据库安装的各项工作。