Linux学习之安装MySQL

Linux学习MySQL
placeholder image
admin 发布于:2019-02-27 10:58:27
阅读:loading

官网下载安装包、安装方式为解压版,一步一步的安装成功之路

在Linux下安装MySQL的安装笔者目前已经安装三次了,由于都是近期安装,故好好的整理一下个人认为的最优安装方式奉上,可谓呕心沥血版了。

安装方式介绍

由于本人在安装MySQL的过程中,至少发现了有3种安装的方式,详细为:

1、所有的直接在线安装;

2、采用rpm包的方式安装;

3、采用解压的方式安装(本文采用这种);

个人认为这些安装方式中,采用解压版的方式安装最为靠谱,浅浅的总结出解压版安装的优势:

(1)安装无需再从网络下载,今后使用的服务器无法连接互联网和批量服务器安装耗费流量带宽;

(2)基于解压安装所涉及调整文件的范围可控,同时便于安装失败的回滚;

(3)移植性较强,更加专业的安装方式;

(4)、、、、、、;

一、下载MySQL安装包

进入MySQL官网下载地址(https://dev.mysql.com/downloads/mysql/),点击当前最新版本5.7的链接,浏览器转至下载页面(https://dev.mysql.com/downloads/mysql/5.7.html#downloads),此时选择对应的MySQL安装版本即可,由于本文章为安装Linux版本的MySQL,故选择下载版本将需要的文件下载下来即可,参考下载过程如下图所示:


二、检查MariaDB是否安装

什么是MariaDB?安装MySQL跟这个东西有啥关系?带着这些疑问,简单的给你科普一下(也是从网上各种科普),大概意思是说:由于MySQL的老东家被Oracle收购了,许多的业内开源组织担心有朝一日的MySQL也成了闭源(收费)产品,所以一些牛掰的组织在开源的MySQL基础上拉起了一个分支叫MariaDB,致力于MySQL的开源维护事业,这背后的努力和贡献值得我们大家去学习。目前来看,MySQL的最新版本5.7.25仍然可用,故,此处就无须使用MariaDB了,它是在安装CentOS7的时候默认自带的,所以卸载它,换成MySQL吧,卸载了等于说本次安装基于纯粹的CentOS7系统去安装的。当然了如果自带的系统没有它,此步骤直接跳过。

查看系统是否安装的有MariaDB的命令及卸载命令参考下图所示:

image.png

待命令执行完毕,再查询一下已发行不存在了,参考下图:

image.png

注意以上的卸载动作会将系统默认自带的/etc/my.cnf文件一起删掉,该文件为mysql软件的参数配置文件,后续中需要编辑此文件,所以可在卸载之前将这个文件备份一下到本地,如果未备份被删掉了就重新创建一下该文件也可以,文件的编码方式为GBK(记事本中另存为的ASNI),下列文件为笔者在安装mysql之前的备份文件(里面的一些参数需要修改,下文会有讲),原始文件可用来参考了解一下,如下:

my.cnf(原文件备份).zip

三、检查MySQL是否安装,是否存在MySQL的组和用户

创建mysql组和mysql用户是给本系统添加组用户,意在给mysql运行的时候使用一个独立的账号,假设mysql故障了或被黑了也不会影响到系统root的用户(安装时只是将mysql-server的安装目录权限赋给了mysql目录),换句话说是将mysql数据库运行在一个独立的系统用户下以保证mysql服务的独立性,提高整个系统的稳健性。

检查mysql数据库是否已经安装命令:

image.png

查看是否已经存在mysql组与mysql用户,如果不存在则创建,创建新的group和user,其中用户密码为chen2019,创建完再查看是否已经创建完成,参考过程及命令如下图所示:

image.png

四、解压MySQL的安装文件(压缩包)

将安装文件使用Xftp工具传输至服务器的/usr/local/temp目录下(该目录的创建可用命令也可用ftp工具使用图形化界面创建),解压缩mysql-5.7.25-linux-glibc2.12-x86_64.tar文件至此目录下,注意这些解压命令都是将文件解压至当前目录下,所以在未指定解压路径时,需要注意一下当前的路径是否为期望解压的路径所在,参考解压为:

image.png

可以看到解压后的文件分为mysqlxxx.tar.gz与test.tar.gz,这与一开始从MySQL官网下载时的下载选项一致。

解压后的目录结构参考如下:

image.png

再解压.tar.gz的安装文件(非test的文件):

image.png

安装文件.tar.gz文件解压后的目录结构为:

image.png

将此目录移动至/usr/local/mysql目录(因为mysql的一些文件里面默认好了以此目录去做更改的安装方法,本次就以默认的目录安装),执行下列命令:

image.png

对应命令的生效结果参考下图所示:

image.png

更改所属目录的组和用户,(后来查了一下这命令的意思是:将这个文件夹的所有权赋给mysql组下的mysql用户)

image.png

前面的mysql分别对应的是组和用户名,后面的mysql对应的是文件夹名称。

此时进入mysql目录并创建data文件夹,该文件作为mysql的数据库安装文件生成目录,在my.cnf里面配置时需要使用到,故此时需要手动创建一下,我直接使用Xftp工具生成。

五、安装配置MySQL

(1)打开/etc/目录下的my.cnf文件,如果没有则重新创建一个即可,如下为新建的一个my.cnf文件,与其对应的参数值(值的=两边都把空格去掉了),另外文件的存储格式为GBK,否则使用vim命令查看时会有乱码,参考如下图所示:

image.png

(2)当前目录为mysql的安装目录,执行下列安装命令:

[root@localhost mysql]# bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

注意:如果这个步骤出现了错误,仍然也会在datadir指定的目录创建data文件夹和一些数据文件,下次执行该命令直接删除这个data文件夹即可,参考一些错误和解决办法(基本上是由于服务器缺少依赖导致);

================参考20210403又安装时出现的错误及解决过程:开始===================

执行命令时提示下列错误

bin/mysql_install_db --user=mysql --basedir=/app/mysql5.7.33/ --datadir=/app/mysql5.7.33/data/

2021-04-03 21:47:57 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize

2021-04-03 21:47:57 [ERROR]   Child process: /app/mysql5.7.33/bin/mysqldterminated prematurely with errno= 32

2021-04-03 21:47:57 [ERROR]   Failed to execute /app/mysql5.7.33/bin/mysqld --bootstrap --datadir=/app/mysql5.7.33/data --lc-messages-dir=/app/mysql5.7.33/share --lc-messages=en_US --basedir=/app/mysql5.7.33

-- server log begin --


-- server log end --

解决方法为:删除上述已经创建的data文件夹及文件,并重新执行下列命令:

bin/mysqld --user=mysql --basedir=/app/mysql5.7.33/ --datadir=/app/mysql5.7.33/data/ --initialize

bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

[root@iZ2zeecjj2jqni713rx6ewZ mysql5.7.33]# yum install -y libaio

提示:一般都是由不同cao作系统的依赖导致,网上也都是可以搜到对应问题的解决办法。

================参考20210403又安装时出现的错误及解决过程:结束===================

其中,两个参数与my.cnf中的一致

image.png

(3)将mysql的服务文件映射值linux的服务命令里面,使得可以通过短命令去cao作mysql的启动和关闭,即将mysql/support-files/mysql.server文件拷贝至/etc/init.d/mysqld(重命名),也可以通过Xftp客户端拷贝并重命名,命令执行为:

image.png

参考结果为:

image.png

(4)启动mysql服务(启动方式至少有3中)

systemctl start mysqld   方式1

/etc/init.d/mysqld restart  方式2

$mysql_dir/bin/mysqladmin -uroot -p shutdown 方式3(没试过start的方式)

service mysql start 方式4

image.png

再附上一种方式的启动命令吧(配图是重启命令),如下:

image.png

六、修改mysql默认密码

(1)登录mysql数据库(网上看到的资料里面有说明在MySQL安装过程中会输出默认的密码,这个我老是忘记去查看一下,专门去看也没看到在哪里,所以在不知道默认密码的情况下,我们先尝试一下去登录,进入mysql/bin目录,输入./mysql -uroot -p执行,此时发现需要输入密码,而我们并不知道默认密码,这是我们可以通过设置my.cnf文件,在[mysqld]下添加skip-grant-tables,意思是跳过权限表的校验,可以运行免密(空密码)登录,此时通过 vim 命令更改也好,通过Xftp直接修改也罢,要的结果如下:

image.png

修改完my.cnf文件后,我们需要重启一下mysql服务器,如下命令 service mysqld restart,参考如下,

image.png

重新再登录mysql数据库,当前目录为/usr/local/mysql,输入命令为:bin/mysql -uroot -p回车,出现Enter password:后继续回车(设置了可以不用输入密码的)就出现了mysql的命令行提示窗口了,如果想退出则输入 exit 即可,参考如下图所示:

image.png

(2)修改mysql的默认密码,假设将密码修改为www.chendd.cn(密码要有一定的复杂度,大小写数字特殊字母等),具体步骤参考如下:

我们先将当前的数据库切换至mysql库,再查询一下user表,看一下这个表的所有字段,使用 select * from user where user='root';可以看到再命令窗口下的数据显示非常混乱,但是可以看到一些我们关注的字段,如Host、User、authentication_string 这3个字段我们单独查询,参考结果如下图所示:

image.png

此时,我们将authentication字段的值修改掉,即表示将mysql用户的默认密码修改,由于是密文就需要我们使用password函数更改,参考如下图所示:

image.png

对应的运行命令参考如下:

select Host,User,authentication_string from user where user='root';

update user authentication=password('www.chendd.cn') where user='root';

update user set authentication_string=password('www.chendd.cn')  where user = 'root';

flush privileges;

update user authentication=password('www.chendd.cn') where user='root';

此时,新密码修改成功,我们输入 exit 退出,先使用空密码登录,再使用新密码登录并运行一些命令,参考如下所示:

image.png

通过操作我们发现空密码已经失效了,新密码可以正常登录成功,但是不要高兴太早了,这个新密码无法执行任何命令,需要去重置密码才能正常使用,参考如下:

image.png

重置密码为:88911006@qq.com

image.png

此时我们再使用exit命令退出,使用旧密码www.chendd.cn无法登录了,新密码可以正常登录,参考如下:

image.png

登录后可以执行任何命令,参考如下:

image.png

这个时候,我们只要重启一下mysql服务器,就会发现空密码仍然可以登录,此时需要我们将my.cnf文件中刚才增加的skip给注释或删除掉,我这里就先不删了。

七、设置mysql可以被远程连接访问

(1)打开客户端测试一下,此时应该无法连接成功(我这里使用mysql官方提供的workbench);

查看本机IP

image.png

尝试远程连接

image.png

(2)修改mysql数据库下的mysql表的Host字段,将该字段默认值“localhost”修改为“%”,表示允许任何目标机器登录,参考如下sql语句:

 update user u set u.host='%' where u.user = 'root';

 flush privileges;

(3)设置Linux服务器的防火墙,开启3306端口的放行(还有一些设置直接是关闭防火墙,个人不建议设置设置),详细如下:

查看本机打开的防火墙端口:

增加3306的端口永久放行;

重新载入防火墙设置;

查看本机打开的防火墙端口;

image.png

我们先telent一下这个ip和端口,测试一下连接是否已经正常,参考如下:

此时再使用TestConnection发现连接已经打通了,

image.png

点击ok按钮,发现数据库已然可以登录并且正常查询了,参考如下图所示:

image.png

ei,感觉好奇怪?奇怪就对了,这里root的host值明明是localhost为什么可以被远程登录呢,别忘记了,我前文中并没有将 my.cnf中的skip-grant-tables注释或删除,此时,我们再将这个参数注释掉,发现重新连接是无法登录成功的,参考下图所示:

image.png

所以说,我们现在两个办法:

第一:将这个配置再解开,然后重启mysql服务器;

第二:使用命令行更改表,将user表的host值修改为%;

我在这里采用第二种方式,直接update,参考如下图所示:

image.png

小提示:别忘记刷新了,可无需重启mysql服务器,参考如下所示:

image.png

八、补充知识点

至此,已经大功告成,有两个知识点待补充,

一、设置mysql开机自动启动;

个人感觉不是很适用,故此处省略掉,有需要的可自行了解;

二、设置mysql安装在其它目录(自定义目录,非默认的/usr/local/mysql目录下);

我在第一次安装mysql时,并不知道它还有一个叫默认安装位置(或者叫建议安装目录)的这个一个路径,就很随意的安装到一个叫/usr/local/tools/mysql-server-5.7.25的目录下了,因为我在学习Linux时将所有相关的软件及安装均放置在了此目录,所以安装的过程中也出现了一些问题,现在特将mysql安装至这个目录下,参考如下(在安装第3步解压缩mysql安装文件后,我特意克隆了一份系统,安装到自定义目录的实践就在这个新的系统上进行):

①、将/usr/local/mysql目录移动至/usr/local/tools/mysql-server-5.7.25目录下(此处为了省事儿就直接采用Xftp来了);

image.png

②、修改/etc/my.cnf文件,将basedir与datadir的参数值进行修改为新的参数值;

image.png


image.png

③、复制mysql-server-5.7.25/support-files/mysql.server 到 /etc/init.d/mysqld 下,使用vim编辑 mysqld文件,设置两个basedir、datadir的参数值(见46、47行),参考如下图:

image.png

④、安装mysql,进入mysql-server-5.7.25目录,执行bin/mysql_install_db --user=mysql --basedir=/usr/local/tools/mysql-server-5.7.25/ --datadir=/usr/local/tools/mysql-server-5.7.25/data/

(这一步也许会出现问题,请保证 --user=mysql的组或用户名已创建、请保证my.cnf文件为ANSI编码、请保证mysql-server-5.7.25/data为空目录)

⑤、启动服务,使用service mysqld start

image.png

再接下来转向至上述第5步骤的修改mysql的默认密码、设置远程登录等等,请开始你的表演。


 点赞


 发表评论

当前回复:作者

 评论列表


留言区