- 背景
- 安装前注意事项
- 版本的选择
- 卸载已安装的mysql
- 配置sudo权限
- 基于二进制安装包安装
- 安装包的下载
- 安装包目录说明
- 解压二进制安装包
- 配置系统环境变量
- 创建文件目录
- 创建操作系统用户
- 初始化mysql数据库
- 初始化ssl证书
- 启动mysql服务
- 登录mysql数据库
- 配置systemctl/service命令启动mysql
- 总结
背景
mysql的安装有很多种方式,基于不同的平台又有不同的安装方式。接下来几篇文章,我们来盘点一些在linux系统下常用的安装方式。这篇文章我们先来看一下基于已经编译好的二进制文件如何安装mysql数据库。
安装前注意事项
版本的选择
推荐安装general availability(ga)版本,也称为生产或者稳定版本。当然,如果想尝试新鲜的功能,可以尝试安装开发版本,这样的版本有新的功能,但是不一定稳定。在我们的生产环境中不要使用这样的版本,要使用稳定版本。
mysql版本的命名规则,拿5.7.32举例说明。5是大版本,7是中间版本,32是小版本好。其中大版本+总结版本,这两个值可以确定一个稳定发行版本。小版本号主要是用来迭代修复某一个稳定版本的bug,每修复一些bug,重新发布就会把小版本号加一。
卸载已安装的mysql
如果之前已经安装过mysql,通过yum或者apt-get的方式安装的,在使用二进制包安装之前,需要把之前安装的mysql彻底卸载掉。卸载的方式也需要通过yum或者apt-get命令来卸载。卸载完成之后,需要查看/etc/my.cnf和/etc/mysql/my.cnf目录下面是否还有mysql相关的文件或者目录,如果存在的话,删除它们。
如果是通过其他方式安装的,可以把对应的安装目录删除,环境变量删除即可。
配置sudo权限
要使用root用户来安装mysql,如果你不是使用root用户,那么你使用的用户,起码需要有sudo的权限。如何配置普通的用户具有sudo权限呢?参考下面的步骤。
首先确保你的系统中已经安装了sudo的命令,如果没有安装sudo的命令,则需要使用yum来安装一下sudo命令。安装方式如下:
# 查看是否安装了sudo命令 [root@b9f018d06344 ~]# sudo --help # 使用yum来安装sudo命令 [root@b9f018d06344 ~]# yum install sudo # 安装完sudo命令之后,在/etc目录下面会生成sudo相关的配置文件,如下所示 [root@b9f018d06344 ~]# ls -lstr /etc/sudo* 8 -r--r----- 1 root root 4328 may 18 2020 /etc/sudoers 4 -rw-r----- 1 root root 1786 may 18 2020 /etc/sudo.conf 4 -rw-r----- 1 root root 3181 may 18 2020 /etc/sudo-ldap.conf /etc/sudoers.d: total 0 [root@b9f018d06344 ~]#
编辑sudo的配置文件/etc/sudoers,在里面增加我们想要使用sudo命令的用户信息。注意,此时编辑的时候需要使用visudo命令而不能直接使用vi命令,因为此时的/etc/sudoers配置文件对任何用户来说都是只读的,包括root用也是只读的,如果你此时强行使用vi命令编辑,在编辑的时候,系统会提示你正在修改一个只读的文件,所以需要使用visudo命令来修改。visudo和vi没有什么区别,命令的使用规则一样。具体增加的配置内容如下所示:
[root@b9f018d06344 ~]# visudo /etc/sudoers # 打开文件后,找到如下的这一行 root all=(all) all # 在上面的行下面增加如下四行中的任意一行即可。 # 表示指定的用户可以执行sudo命令,但是在执行的时候,需要输入这个用户的密码后才可以执行。 your_user_name all=(all) all # 表示指定的用户组下面所有的用户都可以执行sudo命令,但是在执行的时候,需要输入对应的用户的密码后才可以执行。 %your_group_name all=(all) all # 表示指定的用户可以执行sudo命令,并且在执行的时候,不需要输入这个用的密码就可以执行。 your_user_name all=(all) nopasswd: all # 表示指定的用户组下面所有的用户都可以执行sudo命令,并且在执行的时候,不需要输入对应的用户的密码就可以执行。 %your_group_name all=(all) nopasswd: all
当然,如果你不使用visudo命令,非要使用vi命令也是可以的。你可以使用root用户,先把配置文件/etc/sudoers的权限改为root可以读写,然后再使用vi就可以编辑保存了。修改完成之后,再把这个配置文件的权限给修改回来。这样也是可以的,属于一种曲线救国的方式。但是为了安全、省事、方便起见,推荐使用visudo命令。
基于二进制安装包安装
安装包的下载
登录mysql的官网,进入下载页面。选择我们的二进制安装包。如下图所示:
地址为:https://dev.mysql.com/downloads/
地址为:https://dev.mysql.com/downloads/mysql/
可以直接点击download按钮,下载到本地,然后再上传到服务器上,这里我们选择复制下载地址,到服务器上面使用wget命令来下载安装包(注:服务上面的网络比本地的网络下载得快很多,这是我选择在服务器上下载安装包的原因),如下所示:
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
安装包目录说明
下载后解压下载后的安装包,解压后的效果如下:
[root@b9f018d06344 ~]# tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz -c /usr/local [root@b9f018d06344 ~]# cd /usr/local/mysql-5.7.32-linux-glibc2.12-x86_64 [root@b9f018d06344 mysql-5.7.32-linux-glibc2.12-x86_64]# ls license readme bin docs include lib man share support-files [root@b9f018d06344 mysql-5.7.32-linux-glibc2.12-x86_64]# ls -lstr total 276 4 -rw-r--r-- 1 7161 31415 587 sep 23 12:00 readme 244 -rw-r--r-- 1 7161 31415 247914 sep 23 12:00 license 4 drwxr-xr-x 3 root root 4096 jan 18 11:17 include 4 drwxr-xr-x 4 root root 4096 jan 18 11:18 man 4 drwxr-xr-x 2 root root 4096 jan 18 11:18 bin 4 drwxr-xr-x 5 root root 4096 jan 18 11:18 lib 4 drwxr-xr-x 28 root root 4096 jan 18 11:18 share 4 drwxr-xr-x 2 root root 4096 jan 18 11:18 support-files 4 drwxr-xr-x 2 root root 4096 jan 18 11:18 docs
针对上述解压出来的文件和目录,挑选比较重要的简单说明一下:include:mysql启动服务使用的包含头文件。man:使用man命令查看mysql相关命令的手册。bin:mysql所有的一些命令都在这里面,都是一些可执行的二进制文件。需要把这个目录配置到$path环境变量中,便于以后在任何目录都可以直接执行mysql的各种命令。lib:mysql启动服务的时候,需要依赖的库文件。share:mysql的错误消息文件和字符集文件都放在这个文件夹下面,里面还有一些sql文件,是初始化mysql数据库的时候使用的。docs:mysql帮助手册。
解压二进制安装包
把下载好的二进制安装包解压到指定目录下,一般我们解压安装在/usr/local目录下面。
[root@b9f018d06344 ~]# tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz -c /usr/local
创建软连接,这样当我们执行cd /usr/local/mysql命令的时候,就等于执行了命令cd /usr/local/mysql-5.7.32-linux-glibc2.12-x86_64命令,这可以方便我们平时的操作,又可以保留我们mysql的安装文件名称中的版本,这是在linux系统中安装二进制文件的一种常用的方法。
[root@b9f018d06344 ~]# ln -s /usr/local/mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql
配置系统环境变量
配置环境变量,方便在任何目录下面都可以直接执行mysql的各种命令。原则就是把/usr/local/mysql/bin目录添加到linux系统的$path变量中。可以在/etc/profile文件最后,增加export path=$path:/usr/local/mysql/bin这一行代码。具体修改环境变量的方式如下所示:
[root@b9f018d06344 mysql]# vi /etc/profile # 查看最后一行是否添加成功。
[root@b9f018d06344 mysql]
# tail -1 /etc/profileexport path=$path:/usr/local/mysql/bin# 使用source命令重新加载一下/etc/profile文件,是当前修改马上生效,否则需要退出操作系统,重新登录才生效。
[root@b9f018d06344 mysql]
# source /etc/profile
创建文件目录
首先说明一下,这一步可以省略不做。因为这个步骤是为了以后执行一些load data、selct … into outfile命令的时候使用到的文件目录才创建的。如果不用这些命令,则不用创建这个文件夹目录。创建目录和授权的命令如下:
[root@b9f018d06344 mysql]# cd /usr/local/mysql
[root@b9f018d06344 mysql]
# mkdir mysql-files
[root@b9f018d06344 mysql]
# chown mysql:mysql mysql-files
[root@b9f018d06344 mysql]
# chmod 750 mysql-files
之所以有这几步操作的原因是为了以后mysql执行load data 和select … into outfile这样的语句时候会使用到这个文件夹目录,这个文件夹需要配合mysql中的参数secure_file_priv一起使用。如果我们不需要执行load data、select … into outfile这样的命令,这个文件目录是可以不创建的。这并不影响我们后面安装初始化mysql数据库。
创建操作系统用户
使用如下命令在mysql服务器上创建mysql用户:
[root@b9f018d06344 ~]# groupadd mysql
[root@b9f018d06344 ~]
# useradd -r -g mysql -s /bin/false mysql
创建操作系统用户mysql的原因是因为初始化mysql数据库的时候,会使用mysql这个用户来进行初始化。如果没有这个用户,在初始化mysql数据库的时候会出现如下错误。从安全性的角度上,创建一个单独的用户mysql,然后给这个用户授予适当的权限,然后将mysql服务器启动这个用户下面也是比较合理的一种方式。
[root@b9f018d06344 bin]# mysqld --initialize --user=mysql # 初始化mysql数据库 2021-01-20t04:17:54.981607z 0 [warning] timestamp with implicit default value is deprecated. please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2021-01-20t04:17:54.985870z 0 [error] fatal error: can't change to run as user 'mysql' ; please check that the user exists! 2021-01-20t04:17:54.985947z 0 [error] aborting
[root@b9f018d06344 bin]
#
初始化mysql数据库
现在开始执行mysql数据库的初始化操作,初始化的时候出现的错误:
[root@b9f018d06344 mysql]# bin/mysqld --initialize --user=mysql bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: no such file or directory
错误的原因是:缺少libaio.so库文件,需要安装libaio,使用yum命令安装,如下:
# 查找安装包
[root@b9f018d06344 mysql]
# yum search libaio# 执行安装
[root@b9f018d06344 mysql]
# yum install libaio -y
再次尝试初始化mysql数据库,再次出现如下错误:
[root@b9f018d06344 mysql]# bin/mysqld --initialize --user=mysql bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: no such file or directory [root@b9f018d06344 mysql]#
失败的原因,缺少libnuma库文件,使用yum命令来安装对应的库文件。
[root@b9f018d06344 mysql]# yum search libnuma
[root@b9f018d06344 mysql]
# yum install numactl-libs.x86_64 -y
再次初始化mysql数据库,初始化成功,执行过程如下:
complete!
[root@b9f018d06344 mysql]
# bin/mysqld –initialize –user=mysql2021-01-19t07:42:28.498794z 0 [warning] timestamp with implicit default value is deprecated. please use –explicit_defaults_for_timestamp server option (see documentation for more details).2021-01-19t07:42:29.207461z 0 [warning] innodb: new log files created, lsn=457902021-01-19t07:42:29.291581z 0 [warning] innodb: creating foreign key constraint system tables.2021-01-19t07:42:29.363912z 0 [warning] no existing uuid has been found, so we assume that this is the first time that this server has been started. generating a new uuid: e1d0a6c5-5a29-11eb-aa62-0242ac110002.2021-01-19t07:42:29.372530z 0 [warning] gtid table is not ready to be used. table ‘mysql.gtid_executed’ cannot be opened.2021-01-19t07:42:30.423665z 0 [warning] ca certificate ca.pem is self signed.2021-01-19t07:42:30.487269z 1 [note] a temporary password is generated for root@localhost: 4pjsyg8bq_td
[root@b9f018d06344 mysql]
#
可以看到输出的信息中,有生成的root用户的临时密码4pjsyg8bq_td,在启动mysql服务之后,使用这个密码,可以登录到mysql数据库中。这里要将这个密码保存到一个地方,后面第一次登录mysql数据库的时候会用到。
初始化ssl证书
使用如下命令来初始化mysql的ssl证书,这个命令的作用是在客户端连接到mysql服务端的时候,使用ssl加密通讯,提高了mysql数据库的安全性。但是,在初始化的过程中遇到如下的错误:
[root@b9f018d06344 mysql]# bin/mysql_ssl_rsa_setup 2021-01-19 08:57:03 [error] could not find openssl on the system
[root@b9f018d06344 mysql]
#
错误原因:缺少openssl库文件。解决方式,使用yum来安装对应的库文件。安装完成后,再次尝试初始化ssl服务,执行成功。
[root@b9f018d06344 mysql]# yum install openssl -y
这里初始化ssl功能的命令,可以根据自己的实际情况来觉得十分启用。启用ssl后,连接通信是加密的,但是这样会导致mysql的性能有所降低。这个降低的地方主要是建立连接、加密、解密的这些操作。如果是长连接、或使用连接池,性能影响得较少一下。mysql5.7版本已经默认开启了ssl功能,所以这个步骤可以不执行。
启动mysql服务
尝试启动mysql服务器,启动后使用ps命令可以看到有mysqld_safe进程已经在后台启动,此时可以尝试用上面生成的临时密码登录mysql数据库。
[root@b9f018d06344 mysql]# bin/mysqld_safe --user=mysql & [1] 532
[root@b9f018d06344 mysql]
# logging to ‘/usr/local/mysql/data/b9f018d06344.err’.2021-01-19t09:01:18.978673z mysqld_safe starting mysqld daemon with databases from /usr/local/mysql/data
[root@b9f018d06344 mysql]
# ps pid tty time cmd 423 pts/2 00:00:00 bash 532 pts/2 00:00:00 mysqld_safe 642 pts/2 00:00:00 ps
登录mysql数据库
使用前面生成的root用户的临时密码,尝试登录mysql数据库又出现如下错误:
[root@b9f018d06344 mysql]# bin/mysql -uroot -p4pjsyg8bq_td bin/mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: no such file or directory [root@b9f018d06344 mysql]#
失败原因:缺少库文件libncurses.so.5,解决方式,使用yum安装缺少的包。
[root@b9f018d06344 data]# yum install libncurses.so.5 -y
上述安装命令执行完整之后,再次尝试登录,仍然出现找不到libncurses.so.5的错误提示,索性执行如下语句,把所有关于libncurses的库文件都安装上。
[root@b9f018d06344 data]# yum install libncurses* -y
安装完成后,再次尝试登录mysql数据库,成功。登录之后,需要先修改root用户的临时密码,然后才可以进行其他操作,否则不能进行任何操作。下面我们把root用户的密码改为root,过程如下所示:
[root@b9f018d06344 mysql]# bin/mysql -uroot -p4pjsyg8bq_td mysql: [warning] using a password on the command line interface can be insecure. welcome to the mysql monitor. commands end with ; or g. your mysql connection id is 3 server version: 5.7.32 copyright (c) 2000, 2020, 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> show databases; error 1820 (hy000): you must reset your password using alter user statement before executing this statement. # 修改root用户的密码,使用如下命令 mysql> alter user 'root'@'localhost' identified by 'root'; query ok, 0 rows affected (0.00 sec) mysql>
配置systemctl/service命令启动mysql
经过前面的步骤,我们已经成功安装了mysql数据库,并且已经登录到mysql数据库中。为了方便以后的管理,我们配置使用linux系统服务的管理命令来启动或停止mysql。把mysql安装目录下面的mysql.server配置文件复制到/etc/init.d目录下面。
[root@b9f018d06344 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/ [root@b9f018d06344 mysql]# ls -lstr /etc/init.d/ total 16 4 -rw-r--r-- 1 root root 1161 nov 13 23:00 readme 12 -rwxr-xr-x 1 root root 10576 jan 20 07:28 mysql.server [root@b9f018d06344 mysql]#
此时我们就可以systemctl命令或者service命令来启动或关闭mysql服务了。systemctl是目前linux 8版本中的管理系统服务的命令,在以前的版本中是使用service命令来关管理的。
[root@b9f018d06344 mysql]# systemctl start mysqld
[root@b9f018d06344 mysql]
# systemctl stop mysqld
[root@b9f018d06344 mysql]
# systemctl restart mysqld
[root@b9f018d06344 mysql]
# systemctl status mysqld
[root@b9f018d06344 mysql]
# service mysqld start
[root@b9f018d06344 mysql]
# service mysqld stop
[root@b9f018d06344 mysql]
# service mysqld restart
[root@b9f018d06344 mysql]
# service mysqld status
总结
使用二进制安装包来安装mysql数据库,期间需要执行的步骤大概如下:
# 解压安装包到指定目录 tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz -c /usr/local # 把二进制安装包解压到/usr/local目录下 ln -s /usr/loca/mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql # 创建软连接,把mysql文件夹连接到解压后的二进制文件夹 # 创建文件目录 cd /usr/local/mysql # 进入到mysql二进制文件目录 mkdir mysql-files # 创建文件夹,这个文件夹用于导出mysql数据或导入mysql数据的时候使用。 chown mysql:mysql mysql-files # 修改文件夹的属主 chmod 750 mysql-files # 修改文件夹的权限 # 添加系统用户和用户组 groupadd mysql # 在mysql服务器上面,创建一个名称为mysql的用户组 useradd -r -g mysql -s /bin/false mysql # 在mysql服务器上面创建一个名为mysql的用户,并把它添加到名为mysql的组中,设置这个用户不能登录mysql服务器。 # 配置系统环境变量 vi /etc/profile # 编辑环境变量配置文件,在path环境变量后面增加mysql的bin目录 export path=$path:/usr/local/mysql/bin source /etc/profile # 重新加载环境变量,是上面增加mysql bin目录生效。 # 初始化mysql数据库并启动 mysqld --initialize --user=mysql # 初始化mysql数据库 mysql_ssl_rsa_setup # 初始化ssl,用于连接mysql服务的时候支持ssl加密通讯,这样连接通信更加安全。 mysqld_safe --user=mysql & # 在后台启动mysql服务 # 配置操作系统启动脚本 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server # 设置mysql启动脚本到service中,用于使用操作系统服务管理的命令来启动mysql服务
在安装和初始化期间,可能需要的其他库文件可以通过yum命令来安装。你可能需要的依赖库有如下几个:
yum update yum install wget yum install passwd yum install sudo yum install libncurses* yum install ncurses-compat-libs-6.1-7.20180224.el8.i686 yum install openssl yum install libaio yum install libnuma yum install numactl-libs.x86_64 yum install initscripts -y
使用已经编译好的二进制文件安装mysql的过程就介绍到这里了,后续会分享其他几种mysql的安装方式。
需要了解更多数据库技术:压缩包安装软件(手机解压的游戏安装步骤),都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/dtteaching/1077974.html