linux下安装MySQL5.7及遇到的问题总结

5 篇文章 1 订阅

这两天要帮一个小可爱安装hive.
记得以前安装hive的时候进展比较顺利,在MySql的安装上却遇到过一些问题.
为了到时候操作小可爱电脑时能行云流水,先用自己的虚拟机偷偷的把MySQL安装一遍
机智如我~

把这次安装的详细过程,以及遇到的问题记录下来,分享给大家

本篇博客要点如下:

一. 准备工作

二. 正式安装MySQL

三. 安装中遇到的问题

linux下安装MySql5.7.24

一. 准备工作

1.1 检查是否安装过mysql

rpm -qa | grep mysql

在这里插入图片描述
我这台机器没有安装过mysql,所以上述命令输出为空,
否则要执行如下命令删除mysql:

rpm -e --nodeps * #(*为上一个命令输出结果)

1.2 查询并删除所有mysql对应的文件夹

查找所有mysql对应的文件夹

whereis mysql

在这里插入图片描述

 find / -name mysql # 这里要切换到root账户,否则可能会出现目录没有权限的问题

在这里插入图片描述
删除上述的全部文件夹:

rm -rf /etc/selinux/targeted/active/modules/100/mysql /usr/lib64/mysql /usr/share/mysql /usr/lib64/mysql /usr/share/mysql
# 注意 : 对rm -rf命令的使用一定要谨慎!! 建议先在文本编辑器上编辑好,执行时一定要再三确认! 尤其是在生产环境!

在这里插入图片描述确认下mysql相关目录是否清除干净:

find / -name mysql
whereis mysql

在这里插入图片描述
1.3.检查mysql用户组和用户是否存在,没有要创建

cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
groupadd mysql
useradd -r -g mysql mysql

在这里插入图片描述

1.4.下载linux对应的mysql安装包

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
# 首先尝试使用wget命令直接下载...

执行如下图 : (速度高达每秒10K, 12小时就可以下载完…)
在这里插入图片描述
到这里,我只能说,对不起,打扰了!

接着尝试着去官网下载

mysql官网下载链接, 选择社区版
点击looking for previous GA versions ,下载较早版本
在这里插入图片描述
选择好对应的系统和位数,下载框中所示的tar.gz文件
在这里插入图片描述到了这里,需要登录Oracle用户,没有Oracle用户的要填写一大堆信息注册账户,

之后可以真正开始下载,浏览器界面中看到下载状况是这样的:
在这里插入图片描述在这里插入图片描述
到这一步,只有长叹一声! 万恶的资本主义,万恶的墙!

这个时候,只能求助于万能的CSDN下载模块,最终通过会员下载权限拿到了安装包
为了照顾既不能翻墙,又没有CSDN会员和积分的童鞋的感受,我把这个tar.gz文件上传到了百度云里.
能够翻墙的小伙伴按照上面的步骤在官网下载即可!

mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz百度网盘链接

提取码 : ixwd

1.5.文件上传

我这里将tar.gz文件上传到了

/opt/module

文件夹下,这里可根据自己的需要和规划自定义设置

在这里插入图片描述

注意 : 如果是使用wget命令,默认文件会下载到执行wget命令的目录下
这个时候,需要在合适的目录执行wget命令
或者使用mv操作,将tar.gz文件移动到合适的位置

二. 正式安装MySQL

2.1. 解压mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz文件

tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

解压之后结果如下:
在这里插入图片描述

# 将mysql-5.7.24-linux-glibc2.12-x86_64文件夹重明名为mysql
mv /opt/module/mysql-5.7.24-linux-glibc2.12-x86_64 /opt/module/mysql

2.2 在mysql解压目录下新建data目录

mkdir /opt/module/mysql/data

2.3. 更改mysql目录下所有的目录文件及文件夹所属的用户和组,更改文件夹权限

chown -R mysql:mysql /opt/module/mysql
chmod -R 755 /opt/module/mysql

在这里插入图片描述
2.4. 编译安装mysql

cd /opt/module/mysql/bin 

./mysqld --initialize --user=mysql --datadir=/opt/module/mysql/data --basedir=/opt/module/mysql

运行结果如下图:
在这里插入图片描述

请务必记住初始化输出日志末尾的内容(数据库管理员临时密码)!!!我把自己输出日志的文字内容全部截取出来!

2020-04-16T11:25:57.726087Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp serveroption (see documentation for more details).
2020-04-16T11:25:57.726242Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2020-04-16T11:25:57.726257Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2020-04-16T11:25:57.735098Z 0 [Warning] ./mysqld: ignoring option '--innodb-file-per-table' due to invalid value '64'
2020-04-16T11:25:58.482391Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-04-16T11:25:58.639002Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-04-16T11:25:58.740607Z 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: 0b96a796-7fd5-11ea-b583-000c29df67f8.
2020-04-16T11:25:58.744135Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-04-16T11:25:58.745668Z 1 [Note] A temporary password is generated for root@localhost: fsi%Sg&U<5VY

这里**root@localhost:**后的字符串,我这里是:

fsi%Sg&U<5VY

为mysql管理员临时登录密码

2.5. 编辑配置文件my.cnf

[root@linux01 bin]# vi /etc/my.cnf

修改配置项:

datadir

log-error
pid-file

在这里插入图片描述添加配置项:

sql_mode
max_connections
innodb_file_per_table
lower_case_table_names
basedir
[client]
port
socket

修改后配置如下:

[mysqld]
datadir=/opt/module/mysql/data
#socket=3306
socket=/var/lib/mysql/mysql.sock

basedir=/opt/module/mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
max_connections=400
innodb_file_per_table=64
lower_case_table_names=1
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]

log-error=/opt/module/mysql/log/mariadb/mariadb.log
pid-file=/opt/module/mysql/run/mariadb/mariadb.pid
[client]
port=3306
socket=/var/lib/mysql/mysql.sock


在这里插入图片描述
2.6. 创建log-error,pid-file,socket对应目录并赋予权限

mkdir -vp /opt/module/mysql/log/mariadb #递归创建目录
chown -R mysql:mysql /opt/module/mysql/log 
chown -R mysql:mysql /opt/module/mysql/log/mariadb 
chmod -R 755 /opt/module/mysql/log/mariadb
touch /opt/module/mysql/log/mariadb/mariadb.log

在这里插入图片描述

mkdir -vp /opt/module/mysql/run/mariadb #递归创建目录
chown -R mysql:mysql /opt/module/mysql/run
chown -R mysql:mysql /opt/module/mysql/run/mariadb
chmod -R 755 /opt/module/mysql/run

在这里插入图片描述

mkdir -vp /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql

在这里插入图片描述

2.7. 启动mysql服务器:

/opt/module/mysql/support-files/mysql.server start

出现以下输出证明服务启动成功!
在这里插入图片描述2.8. 添加软连接,并重启mysql服务:

 ln -s /opt/module/mysql/support-files/mysql.server /etc/init.d/mysql
 ln -s /opt/module/mysql/bin/mysql /usr/bin/mysql
 ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
 service mysql restart

在这里插入图片描述2.9 登录mysql,修改密码(密码为步骤2.4生成的临时密码)

mysql -u root -p

在这里插入图片描述

set password for root@localhost = password('yourpassword');

在这里插入图片描述
2.10 开放远程连接

mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;

在这里插入图片描述

2.11 设置开机自动启动

cp /opt/module/mysql/support-files/mysql.server /etc/init.d/mysqld #将服务文件拷贝到init.d下,并重命名为mysqld
chmod +x /etc/init.d/mysqld #赋予可执行权限
chkconfig --add mysqld #添加服务
chkconfig --list # 显示服务器列表

在这里插入图片描述至此,mysql彻底安装成功

三. 安装中遇到的问题

3.1. 启动mysql时报错:

报错1:

[root@linux01 mysql-5.7.24-linux-glibc2.12-x86_64]# /opt/module/mysql/mysql-5.7.24-linux-glibc2.12-x86_64/support-files/mysql.server start
/opt/module/mysql/mysql-5.7.24-linux-glibc2.12-x86_64/support-files/mysql.server:行239: my_print_defaults: 未找到命令
/opt/module/mysql/mysql-5.7.24-linux-glibc2.12-x86_64/support-files/mysql.server: 第 259 行:cd: /usr/local/mysql: 没有那个文件或目录

在这里插入图片描述
原因 :编辑配置文件my.cnf时,没有配置basedir属性

解决办法:

[root@linux01 bin]# vi /etc/my.cnf 
basedir=/opt/module/mysql/ # 这里根据个人实际情况配置

报错2:

Starting MySQL.2020-04-16T08:30:15.375180Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Createwritable for user 'mysql'.

在这里插入图片描述报错原因:log-error文件夹没有创建或者log-error文件夹mysql用户缺乏相关权限

解决办法:

mkdir /var/log/mariadb
chown -R mysql:mysql /var/log/mariadb
chmod -R 755 /var/log/mariadb

报错3:

[root@linux01 mysql-5.7.24-linux-glibc2.12-x86_64]# /opt/module/mysql/support-files/mysql.server start
Starting MySQL.. ERROR! The server quit without updating PID file (/opt/module/mysql/data/linux01.pid).

a. 首先怀疑mysql进程是否已经启动

ps -ef|grep mysqld

在这里插入图片描述这里并没有查看到mysql相关进程,证明不是该原因导致

b.怀疑是selinux惹的祸,如果是centos系统,默认会开启selinux

vi /etc/selinux/config
# 将SELINUX=enforcing改为SELINUX=disabled,重启服务器

在这里插入图片描述问题仍然没有解决

后面又试了N多种方案, 都没有能够解决问题,失败的方法就不一一列举…

c.根据过往的经验,一般linux出现让人束手无策的问题,都是权限的锅
于是,开始着手相关目录的权限排查, 不排查不知道,一排查吓一跳!!
在这里插入图片描述log目录,run目录的权限居然是root!!罪魁祸首找到了!

原因: 最初执行的赋权命令为:

chown -R mysql:mysql /opt/module/mysql/run/mariadb
chown -R mysql:mysql /opt/module/mysql/log/mariadb 

是以root用户的身份执行的,它们的父目录仍然为root权限,也因此导致了mysql启动失败

解决方案 :

chown -R mysql:mysql /opt/module/mysql/log
chown -R mysql:mysql /opt/module/mysql/run

在这里插入图片描述
之后重启mysql,启动成功!!
在这里插入图片描述linux使用一定要注意权限问题!!!
linux使用一定要注意权限问题!!!
linux使用一定要注意权限问题!!!

3.2 mysql通过账户名密码登陆报错:

[root@linux01 lib]# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

在这里插入图片描述这次学聪明,首先考虑是否是权限问题:

chown -R mysql:mysql /var/lib/mysql

赋权后,该问题依然存在.

解决方案,添加client配置项

vi /etc/my.cnf
#添加如下内容
[client]
port=3306
socket=/var/lib/mysql/mysql.sock

和最初的my.cof文件对比下感受下区别

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

添加完之后,再次执行,问题得到解决!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值