由于CentOS 7中默认数据库由Mysql替换为了Mariadb,所以我们需要先将其卸载
MariaDB是MySQL关系数据库管理系统的一个复刻,由社区开发,有商业支持,旨在继续保持在GNU GPL下开源。MariaDB的开发是由MySQL的一些原始开发者领导的,他们担心甲骨文公司收购MySQL后会有一些隐患。
MariaDB打算保持与MySQL的高度兼容性,确保具有库二进制奇偶校验的直接替换功能,以及与MySQL API和命令的精确匹配。 MariaDB自带了一个新的存储引擎Aria,它可以替代MyISAM,成为默认的事务和非事务引擎。它最初使用XtraDB作为默认存储引擎, 并从10.2版本切换回InnoDB。
它的首席开发人员是米卡埃尔·维德纽斯,他是MySQL AB的创始人之一,也是Monty Program AB的创始人。2008年1月16日,MySQL AB 宣布它已经同意被太阳微系统集团以大约10亿美元的价格收购。该项收购已于2008年2月26日完成。MariaDB是以Monty的小女儿Maria命名的,就像MySQL是以他另一个女儿My命名的一样。
1、卸载Mariadb
使用shell工具进入CentOS 7.4
查询出CentOS中预装的mariadb并强制删除
[root@VM_0_16_centos ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@VM_0_16_centos ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
2、删除my.cnf文件
[root@VM_0_16_centos ~]# rm /etc/my.cnf
如果上一步操作中自动删除了就无需处理
3、创建mysql用户组
[root@VM_0_16_centos ~]# groupadd mysql
4、创建一个名为mysql的用户并将其添加进mysql用户组
[root@VM_0_16_centos ~]# useradd -g mysql mysql
5、拷贝并解压安装包
将之前mysql的安装包拷贝至 /usr/local/
目录下并解压
[root@VM_0_16_centos local]# tar -zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
6、将解压后的文件夹重命名
默认名字太长了,重命名为mysql
[root@VM_0_16_centos local]# mv mysql-5.6.43-linux-glibc2.12-x86_64 mysql
7、创建my.cnf文件
我们可以从mysql
的support-files
文件夹里拷贝一份默认cnf
文件到/etc
下
[root@VM_0_16_centos support-files]# cp my-default.cnf /etc/my.cnf
通过vim
编辑my.cnf
配置
后文会针对mysql5.6占用内存过大对该配置文件作出修改
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端口
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_name=1
max_allowed_packet=16M
8、执行mysql安装命令
// 进入mysql文件夹
[root@VM_0_16_centos ~]# cd /usr/local/mysql
// 将mysql文件夹及子目录用户和用户组都修改为mysql
[root@VM_0_16_centos mysql]# chown -R mysql:mysql ./
// 执行mysql安装
[root@VM_0_16_centos mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ 安装数据库
安装过程可能出现的问题:
[root@VM_0_16_centos ~]# yum -y install autoconf
安装完成后再次执行mysql
安装命令
如果出现该报错,需要安装numactl64位
[root@VM_0_16_centos ~]# yum -y install numactl.x86_64
再次执行mysql
安装命令,应该可以安装成功了
1、修改my.cnf权限
[root@VM_0_16_centos ~]# chmod 777 /etc/my.cnf
参考的文章中将my.cnf
文件修改为最高权限,但这样是有问题的,正确的应该是644
权限
可以先按照777来,看下为什么会出现问题,然后再修改,这样也能加深印象
2、复制启动脚本到资源目录
[root@VM_0_16_centos mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
3、增加mysqld服务控制脚本执行权限
[root@VM_0_16_centos mysql]# chmod +x /etc/rc.d/init.d/mysqld
4、将mysqld服务加入到系统服务
[root@VM_0_16_centos mysql]# chkconfig --add mysqld
5、检查mysqld服务是否已经生效
[root@VM_0_16_centos mysql]# chkconfig --list mysqld
命令输出类似下面的结果:
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用service命令控制mysql的启动和停止
命令为:service mysqld start
和service mysqld stop
6、启动mysqld
[root@VM_0_16_centos mysql]# service mysqld start
启动可能出现的问题:
这是由于之前在my.cnf
文件中指定socket=/var/lib/mysql/mysql.sock
,而我们还没有创建该目录,所以需要创建并赋予最大权限
[root@VM_0_16_centos ~]# cd /var/lib
[root@VM_0_16_centos lib]# mkdir mysql
[root@VM_0_16_centos lib]# chmod 777 mysql
如果之前将my.cnf
修改为了777
权限的话,这里虽然启动起来了,但给了我们一个警告:由于/etc/my.cnf
配置文件是777
权限的,存在很大的安全隐患,所以启动时被忽略了。我们需要降低权限为644
并重新启动mysql
[root@VM_0_16_centos lib]# chmod 644 /etc/my.cnf
到此mysql可以正常启动
7、将mysql的bin目录加入PATH环境变量
[root@VM_0_16_centos lib]# vim ~/.bash_profile
在文件最后添加如下信息:export PATH=$PATH:/usr/local/mysql/bin
,wq
保存并退出
使配置文件即时生效:
[root@VM_0_16_centos lib]# source ~/.bash_profile
8、登录mysql
[root@VM_0_16_centos ~]# mysql -uroot -p
默认没有密码,直接回车登录
9、修改mysql密码
mysql>use mysql;
mysql>update user set password=password('你设置的密码') where user='root' and host='localhost';
mysql>flush privileges;
10、外网可以访问mysql
mysql>GRANT ALL PRIVILEGES ON *.* TO '你设置的用户名'@'%' IDENTIFIED BY '你设置的密码' WITH
GRANT OPTION;
到此CentOS 7.4安装Mysql 5.6就结束了
由于大家购买的虚拟机内存可能就1G或者2G,而Mysql5.6在启动后就会占用400MB以上的内存,这对于并发量不高的个人业务来说是非常难受的,所以我们需要调整Mysql占用内存大小
在my.cnf配置文件下加上以下命令:
#减少mysql5.6内存占用
performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
其中table_definition_cache
最小值为400,低于这个值也会自动调整为400
效果还是很明显的,我的虚拟机内存为2G,之前启动Mysql后内存占用率为32%,修改后内存占用率为13%。当然,这是牺牲性能从而优化内存,适用于个人或并发量很小的业务,具体Mysql配置还需要根据实际情况优化处理
Centos7安装并配置mysql5.6完美教程 是一篇很好的文章,文章中有几个小问题已经在本文中优化。