首页 » MySQL » MySQL5.7安装过程中遇到的一些坑解决方案

MySQL5.7安装过程中遇到的一些坑解决方案

 

一.题记
工作中往往会涉及到开发环境构建,对于一些重复性的工作我们需要写一些工具或者做一个操作文档来帮助新人快速进入工作,今天这篇内容的分享就是整理了一下我在服务器搭建过程中遇到的坑。
二.实验环境
1.RedHat Enterprise 6 64位
2.MySQL5.7.20
三.实验步骤
1.软件下载:
最新版本:https://dev.mysql.com/downloads/mysql/
历史版本:https://downloads.mysql.com/archives/community/
2.软件安装:
(1).安装前先卸载系统带的旧版本

# rpm -qa | grep mysql
# rpm -e mysql-libs-* --nodeps

(2).解压安装包并安装

# chmod -R 755 ./mysql-5.7.20-1.el6.x86_64.rpm-bundle.tar
# tar -xvf ./mysql-5.7.20-1.el6.x86_64.rpm-bundle.tar
# chmod -R 755 ./
# rpm -ivh ./mysql-community-common-5.7.20-1.el6.x86_64.rpm
# rpm -ivh ./mysql-community-libs-5.7.20-1.el6.x86_64.rpm
# rpm -ivh ./mysql-community-client-5.7.20-1.el6.x86_64.rpm
# rpm -ivh ./mysql-community-server-5.7.20-1.el6.x86_64.rpm
# rpm -ivh ./mysql-community-devel-5.7.20-1.el6.x86_64.rpm

3.启动、停止、重启、查看运行状态

# service mysqld start
# service mysqld stop
# service mysqld restart
# service mysqld status

4.登录
方案一:
(1).查看系统默认生成的mysql密码,然后进行登录

cat /var/log/mysqld.log | grep –-color "password"

方案二:
我这里用以前的案一方式提示我登录错误,所以采用先将mysql设置无密码登录,然后再进行修改默认登录密码,设置好后才启动密码登录。
(1).修改文件【/etc/mysql/my.cnf】,在[mysqld]项下添加【skip-grant-tables】.
(2).执行命令【service mysql restart】,重启mysql服务.
(3).执行命令【mysql -uroot -p】,登录mysql
(4).登录好后,修改管理员密码.

mysql> use mysql;
mysql> UPDATE user SET password=password("xiangqubacn") WHERE user='root';
mysql> flush privileges;
mysql> exit;

备注:mysql5.7已经没有【password】字段了,所以按照上面方式修改会提示错误信息,5.7版本用【authentication_string】替代了【password】,所以按照下面方式设置密码

mysql> use mysql;
mysql> UPDATE user SET authentication_string=password("xiangqubacn") WHERE user='root';
mysql> flush privileges;
mysql> exit;

(5).设置好密码后还原配置文件,修改文件【/etc/mysql/my.cnf】,在[mysqld]项下,删除刚才添加的【skip-grant-tables】,并执行【(2)】步骤重启服务,用新密码登录mysql
四.问题整理
(一).错误信息:

ERROR 1290(HY000) The MySQL server is running with the 
–secure-file-priv option so it cannot execute this statement.

1.问题分析:
这个错误是我在安装mysql后,执行csv文件导出时报出来的,大概的意思就是没有文件修改执行权限,于是查了一下关于【–secure-file-priv】特性介绍,如下:
当secure_file_priv的值为null,表示限制mysqld 不允许导入|导出;
当secure_file_priv的值为/tmp/,表示限制mysqld 的导入|导出只能发生在/tmp/目录下;
当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制;
备注:默认的情况下mysql的这个参数为null
2.解决方案:
(1).查看本地mysql设置

mysql> show global variables like '%secure%';

(2).修改文件【/etc/my.cnf】,追加下面内容,保存后执行【service mysql restart】重启服务

secure-file-priv=

(二).错误信息:

ERROR 1820 (HY000): You must reset your password using 
ALTER USER statement before executing this statement.

1.问题分析:
问题1解决好之后,继续执行我们导出语句,报出了这个问题,大概意思就是密码不符合安全策略要求,需要设置一个复杂点的密码
2.解决方案:

mysql> alter user 'root'@'localhost' identified by 'Xiangquba@cn2017';
mysql> flush privileges;

(三).错误信息:
安装【# rpm -ivh ./mysql-community-server-5.7.20-1.el6.x86_64.rpm】或启动mysql时提示下面错误信息

/usr/sbin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

1.问题分析:
缺少依赖的库
2.解决方案:

yum install libnuma1 numactl

(四).错误信息:

执行【select * from user into outfile "/opt/csv/export/xiangquba.csv" FIELDS TERMINATED BY ',';】报错误信息如下
ERROR 1(HY000):Can't create/write to file '/opt/csv/export/xiangquba.csv' (Errcode:13 -Permission denied)

1.问题分析:
先前以为是权限问题,不过我这里已经确保权限没有问题。后来查了一些资料,发现是selinux的问题。所以我们将selinux关闭即可。
2.解决方案:
1).即时生效
setenforce 0
2).永久有效
修改文件【/etc/selinux/config】里的【SELINUX】参数,然后重启。
修改前:SELINUX=enforcing
修改后:SELINUX=disabled

原文链接:MySQL5.7安装过程中遇到的一些坑解决方案,转载请注明来源!

0