返回《在阿里云中搭建大数据实验环境》首页
提示:本教程是一个系列文章,请务必按照本教程首页中给出的各个步骤列表,按照先后顺序一步步进行操作,本博客假设你已经顺利完成了之前的操作步骤。
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文件(提取码:gx0b),下载到自己笔记本电脑,然后使用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(提取码:vsr2)。
然后,参考之前的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数据库安装的各项工作。