CentOS中有默认安装的MariaDB,它是MySQL的分支,如果要在系统中安装MySQL,当安装完成之后可以直接覆盖掉MariaDB。
查看MariaDB数据库
# rpm -qa|grep mariadb
或
# yum list installed | grep mariadb
查看系统原先是否有MySQL
# rpm -qa |grep mysql
如果有,想要重新安装的话,需要卸载掉原先的MySQL:
以下面要即将安装的mysql为例:
# yum -y remove mysql57-community-release-el7-10.noarch.rpm //安装时以yum install 安装,卸载时就可以以 yum remove 卸载
或者结合下面命令卸载:
# rpm -e mysql软件包名 //普通卸载
# rpm -e --nodeps mysql软件包名 //有依赖包时的强制卸载
下载并安装MySQL官方的 Yum Repository
以root权限去进行安装操作。
# wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的丫子,然后就可以直接yum安装了。
# yum -y install mysql57-community-release-el7-10.noarch.rpm
注意: 此时需要保证有mysql组和mysql账户,否则安装服务器时,可能会有报错(此报错影响数据库的启动),如下:
添加mysql组和mysql组中用户解决:
# groupadd mysql
此时又有报错(此时虽然已是root权限,依然会报错!):
报错原因是 /etc/gshadow有隐藏权限,此次需要清除它的隐藏权限i。
查看其隐藏权限:
# lsattr /etc/gshadow
# chattr -i /etc/gshadow
相应的清除其修改用户的隐藏权限:
# chattr -i /etc/shadow
添加mysql组和mysql组中mysql用户:
# groupadd mysql
# useradd mysql -g mysql
之后就可以安心开始安装MySQL服务器了:
# yum -y install mysql-community-server
大概等个三分钟左右,安装完毕。
安装完成后就会覆盖掉之前的mariaDB。
至此MySQL就安装完成了,然后是对MySQL的一些设置。
------在这之前,我们来看一下第二种安装MySQL的方法即离线安装MySQL的方法------↓------
离线安装MySQL
删除原有的mariadb,不然mysql装不进去
rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
rpm -qa|grep mariadb
在 https://dev.mysql.com/downloads/mysql/ 选择为Red Hat Enterprise Linux 7 / Oracle Linux 7 ,把os的版本选择为all
直接下载mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar,所有的rpm包都在里面
tar -xvf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
解压后所有的rpm包都在里面,按如下顺序依次安装
rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm
OK,离线安装mysql5.7所有文件安装完毕。
之后,对MySQL的一些设置。
首先启动MySQL
启动MySQL服务:
# systemctl start mysqld.service
或
# systemctl start mysqld
# systemctl enable mysqld 开机启动
注: 启动MySQL时如果之前安装服务器时没有添加mysql组和mysql用户,就会报错,如下:
我之前也是没添加用户组和用户(/var/lib/mysql 文件目录下是空的,应该是刚装数据库的原因),找度娘的解决办法:
修改文件目录权限,然而并没有额卵用,如下:
setenforce 0 //用来解决 [InnoDB] Operating system error number 13 in a file operation. 的问题
chown -R mysql:mysql /var/lib/mysql
chmod -R 777 /var/lib/mysql //目录权限必须设置成 777,只设置成 755 也会出错
systemctl start mysqld.service
查看进程
ps -ef |grep mysql
查看权限
cd /var/lib/mysql
ll //双小写 LL
安装服务器前之前添加用户组和用户,就不会有这个报错!!
继续往下进行:
查看MySQL服务的状态:
查看MySQL服务运行状态,运行状态如图:
systemctl status mysqld.service
此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
# grep "password" /var/log/mysqld.log
# mysql -u root -p
输入初始密码,进入数据库:
修改MySQL默认密码,修改密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
此时会因密码过于简单而报错,如下:
原因是MySQL有密码设置的规范,具体是与validate_password_policy的值有关:
MySQL完整的初始密码规则可以通过如下命令查看:(修改密码后才能才看)
mysql> SHOW VARIABLES LIKE 'validate_password%';
密码的长度是由validate_password_length决定的,而validate_password_length的计算公式是:
validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
我已经修改过密码。
初始情况下第一个的值是ON,validate_password_length是8。可以通过如下命令修改:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
设置之后就是我上面查出来的那几个值了,此时密码就可以设置的很简单,例如123456之类的。到此数据库的密码设置就完成了。
退出数据库:
mysql> exit
注意:
但此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新。
此时,查看已安装的mysql软件包:
# rpm -qa |grep mysql
需要把这个卸载掉:
# yum -y remove mysql57-community-release-el7-10.noarch
停止MySQL服务:
# systemctl stop mysqld
Over,终!