首页 > 系统 > 其他 >

CentOS 7 安装 MySQL

2016-11-05

CentOS 7 安装 MySQL。

CentOS 7 下安装MySql

卸载mariadb

yum remove mariadb

为啥要卸载mariadb,这个自行百度一下
http://dev.mysql.com/downloads/mysql/
http://repo.mysql.com/

第一个地址为安装包下载地址
第二个地址为mysql源的安装包

这里写图片描述

上图为所有资源文件,根据文件名可以区分RPM对应的操作系统和版本号
el5 el6 el7 对应redhad5 、6、7,Centos 5 、6、7
fc 对应 Fedora
sles 对应SUSE Linux<喎"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPs7Sw8fV4tKqz8LU2LXEzsS8/srHo7o8L3A+DQo8cHJlIGNsYXNzPQ=="brush:sql;"> wget http://repo.mysql.com/mysql57-community-release-el7-9.noarch.rpm

安装

sudo rpm -ivh mysql57-community-release-el7-9.noarch.rpm

安装MySQL

sudo yum -y install mysql-server

安装过程是一个漫长的等待,检查依赖性,下载安装包,安装

配置MySQL

#查看MySQL状态
service mysqld status
#如果没有启动,启动mysql
service mysqld start

MySQL5.7增加了数据库的安全性,所以安装成功后,需要重置下密码才能使用,首先我们需要获取安装时的临时密码,这样才能登录MySQL

#查看my.cnf
vi /etc/my.cnf

#获取安装日志文件地址,/var/log/mysqld.log,并且查看
vi /etc/log/mysqld.log

#搜索字符串A temporary password is generated for root@localhost:,可以找到这个随机密码,通常这一行日志在log文件的最初几行,比较容易看到

#使用随机登录
mysql -uroot -p

#修改密码http://dev.mysql.com/doc/refman/5.6/en/alter-user.html
#执行命令会提示  ERROR 1820 (HY000)
SET PASSWORD = PASSWORD(&#39;new_password&#39;);

OK数据库安装成功


修改数据库文件目录

默认安装后查看配置文件

vi /etc/my.cnf

数据目录
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

/var/lib/mysql 就是我们要修改的目录
开始转移mysql数据库

systemctl stop mysqld.service
cp -a /var/lib/mysql /data

修改配置文件
datadir=/data/mysql
socket=/data/mysql/mysql.sock

systemctl start mysqld.service

My Word 天,居然启动不了 此处有个大坑,好吧查看启动日志

vi /var/log/mysqld.log

[Warning] Can&rsquo;t create test file /opt/mysql/XXXXXX.lower-test
[Note] /usr/sbin/mysqld (mysqld 5.7.16) starting as process 7060 …
[Warning] Can&rsquo;t create test file /opt/mysql/XXXXXX.lower-test
[Warning] Can&rsquo;t create test file /opt/mysql/XXXXXX.lower-test

居然是不能创建某个文件,难道是权限问题,个目录所有权

chmod 777 /data

再次启动还是不行,同样错误。只能寻求万能的搜索,找到一篇文档,百度太坑爹,全是重复的文章,并且还全是百度自己的广告,找到一篇比较好看的地址如下:
原文地址:MySQL [Warning] Can&rsquo;t create test file xxx lower-test

文章有段话我引用一下

我想,你一定是从搜索引擎搜索这个标题进来的!你一定是想改变mysql默认安装的数据目录!
你已经修改了my.cnf中的datadir的值
你已经chown和chmod了数次新数据目录或者其父路径的属主和权限
你无数次地试图service mysql start,或者 /etc/init.d/mysql start,以及mysql_install_db!
恭喜你看见这篇文章,我在被系统坑了几个小时之后,找到了解决的方法。

不知道你被坑了几个小时,好了终于解决了,方法如下
方法一:关闭selinux

setenforce 0

再次启动,一起OK,别急上只是临时关闭selinux,怎么永久关闭呢?

修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启或等待下次重启。

至于文章提到的apparmor,不知道是啥,CentOS7 中没找到,那就下次碰到再说吧

好吧,关闭selinux可以解决这个问题,那不关闭行不行呢
先了解下什么是SELinux,百度百科传送门SELinux

下面简单了解下SELinux的配置和命令,相关工具使用传送门SELinux相关指令工具

1、获取当前 SELinux 运行状态

getenforce

可能返回结果有三种:Enforcing、Permissive 和 Disabled。Disabled 代表 SELinux 被禁用,Permissive 代表仅记录安全警告但不阻止可疑行为,Enforcing 代表记录警告且阻止可疑行为

2、改变 SELinux 运行状态

setenforce [ Enforcing | Permissive | 1 | 0 ]

该命令可以立刻改变 SELinux 运行状态,在 Enforcing 和 Permissive 之间切换,结果保持至关机。一个典型的用途是看看到底是不是 SELinux 导致某个服务或者程序无法运行。若是在 setenforce 0 之后服务或者程序依然无法运行,那么就可以肯定不是 SELinux 导致的。

若是想要永久变更系统 SELinux 运行环境,可以通过更改配置文件 /etc/sysconfig/selinux 实现

3、SELinux 运行策略

配置文件 /etc/sysconfig/selinux 还包含了 SELinux 运行策略的信息,通过改变变量 SELINUXTYPE 的值实现,该值有两种可能:targeted 代表仅针    对预制的几种网络服务和访问请求使用 SELinux 保护,strict 代表所有网络服务和访问请求都要经过 SELinux。
RHEL 和 Fedora 默认设置为 targeted,包含了对几乎所有常见网络服务的 SELinux 策略配置,已经默认安装并且可以无需修改直接使用。
若是想自己编辑 SELinux 策略,也提供了命令行下的策略编辑器 seedit 以及 Eclipse 下的编辑插件 eclipse-slide 。

4、coreutils 工具的 SELinux 模式

常见的属于 coreutils 的工具如 ps、ls 等等,可以通过增加 Z 选项的方式获知 SELinux 方面的信息
ps auxZ | grep lldpad
ls -Z /usr/lib/xulrunner-2/libmozjs.so

OK,接下来我们看看能不能不关闭SELiux,然后设置新目录的权限,保证服务启动

接下来会用到2个命令:
semanage:SELiux policy管理程式,semanage命令
restorecon:恢复SELinux文件属性即恢复文件的安全上下文,restorecon命令

semanage这个需要安装

yum -y install policycoreutils-python

安装成功,使用semanage查看下目录

semanage fcontext -l | grep /var/lib/mysql

这里写图片描述

查看下复制的目录权限(啥都没有)

semanage fcontext -l | grep /opt/data

执行以下命令

semanage fcontext -a -t mysqld_db_t "/opt/data(/.*)?"
restorecon -R -v /opt/data

启动服务OK

如果修改了socket=/data/mysql/mysql.sock,同理需要对这个文件进行权限处理,我们可以不修改这个配置,只修改数据库目录配置datadir=/data/mysql。如果修改了可以添加一个软件链接解决权限问题

相关文章
最新文章
热点推荐