卸载MariaDB
注意:一定要将mariaDB包和自带mysql包卸载干净,否则安装时出现各种奇妙错误,导致失败。
rpm -qa | grep -i mariadb //查看有没有安装mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 //如果有,卸载MariaDB
卸载已有Mysql
//卸载旧版本的Mysql
rpm -qa | grep -i mysql //查看有没有安装mysql
rpm -e MySQL-client-5.6.38-1.el7.x86_64 //如果有,卸载旧版本Mysql
//删除服务
chkconfig --list | grep -i mysql //查看服务
chkconfig --del mysql //删除服务
//删除mysql分散的文件夹
whereis mysql //查出相应的mysql文件夹,也可以用find / -name *mysql*
rm -rf /use/lib/mysql //删除文件夹
如:
安装依赖
注意:先装好依赖,再装mysql。即使顺序出错,装完依赖一定要卸载mysql并重新装mysql,否则mysql装上了也会出现各种错误
yum install perl
yum -y install autoconf //此包安装时会安装Data:Dumper模块
下载mysql
官网下载mysql,如下:
不同时间mysql可能预留的版本不一致,通常会预留比较稳定的好的版本
注意:centos内核基于Red Hat,所以下载的时候需要下载Red Hat版本
centos 7.2_64位的,如果不清楚自己系统的位数,可以通过file /bin/ls 查看
安装
安装Mysql
解压mysql
tar -xvf MySQL-5.6.38-1.el7.x86_64.rpm-bundle.tar //注意,是-xvf不是-zxvf
安装mysql
rpm -ivh MySQL-client-5.6.38-1.el7.x86_64.rpm //-i是安装,-v是列出更多详细信息,-h是在安装时列出hash标记
rpm -ivh MySQL-devel-5.6.38-1.el7.x86_64.rpm
rpm -ivh MySQL-server-5.6.38-1.el7.x86_64.rpm
如果提示FATAL ERROR: please install the following Perl modules before executing,
先安装perl
yum install -y perl-Module-Install.noarch
修改密码
service mysql status //查看mysql服务状态
//如果是开启服务状态,用service mysql status关闭服务
mysqld_safe --user=mysql --skip-grant-tables --skip-networking & //绕过密码登录
mysql -u root -p //登录
use mysql; //切换数据库
select Host,User,Password from user; //查询用户
UPDATE user SET password=password("root") WHERE user='你设置的密码'; //修改密码
quit //退出
service mysql restart //重启mysql服务
mysql -u root -proot // -proot,p代表password,root是密码
use mysql ; //切换数据库
set password = password('root'); //第一次登陆必须修改mysql密码
flush privileges; //刷新权限
//赋予任何主机访问数据的权限(远程访问)
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges; //刷新权限
quit //退出 mysql
service mysql restart //重启mysql
修改数据目录
首先要先停止服务:service mysql stop,然后找到my.cnf,这个文件在centos6.x中的位置和centos7的默认位置不一样,这个文件在/usr/my.cnf。当然你可以cp这个文件到/etc/my.cnf,mysql加载这个配置文件的时候先加载/etc/my.cnf,如果没有再加载/usr/my.cnf。
其次更改这个文件,加入以下配置
datadir是你要更改的存储数据的目录,注意:这个目录,要是mysql这个用户的权限。因为按照这种方式在centos7安装mysql5.6,数据目录默认在/var/lib/mysql
datadir = /APP/mysql
character_set_server=utf8
max_connections=200
collation_server=utf8_general_ci
lower_case_table_name=1
而这个目录其实是mysql用户组下mysql用户的目录。
因此我们要向迁移mysql存储目录,目录应该也是这样的权限。
最简单的办法就是使用cp -a 命令,加入了-a参数则会将权限也一并拷贝。
因此,执行如下命令: cp -a /var/lib/mysql /APP/ 这样就会将/var/lib/mysql整个拷贝到/APP目录下,并且无网上说的权限的问题。
后面我们需要简单的修改一下mysql的配置
max_connections:mysql的最大连接数
character-set-server=utf8 : 将server的编码设置为utf-8,如果需要安装client,则在[client]中需要配置character-set-client=utf8
collation-server=utf8_general_ci:设置索引编码
lower_case_table_name=1:大小写敏感,设置成1,大小写不敏感。
default-character-set = utf8 :不应该设置为[mysqld]下,否则会报Starting MySQL... ERROR! The server quit without updating PID file的错。我这里注释掉了。
保存后,启动服务:service mysql start
启动报错解决办法:
如果启动报错Starting MySQL... ERROR! The server quit without updating PID file
可能有几个原因:
- 可能进程里已经存在mysql进程
- 可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
- selinux惹的祸,如果是centos系统,默认会开启selinux
- 数据目录权限问题
- 在[mysqld]下设置了default-character-set = utf8,需注释掉
防火墙开放3306端口
//查看firewall状态(runing:运行,not runing:没有运行),如果没有运行,用systemctl start firewalld启动。如果不需要启动防火墙,则忽略这一步。
firewall-cmd --state
firewall-cmd --permanent --zone=public --add-port=3306/tcp //添加3306端口
firewall-cmd --reload //重新加载firewall
设置开机自动启动
chkconfig --list mysql //查看mysql服务
chkconfig mysqld on //开启MySQL服务自动开启命令
chkconfig mysql on //开启MySQL服务自动开启命令
mysql集合重要目录
- /var/lib/mysql 数据库文件
- /usr/share/mysql 命令及配置文件
- /usr/bin mysqladmin、mysqldump等命令
本地API测试成功,但是集群使用出现连接超时或者密码过时的错误
全部设置成N