一、Mysql下载
下载地址:http://mirrors.ukfast.co.uk/sites/ftp.mysql.com/Downloads/MySQL-5.6/
centos6-64位
MySQL-client-5.6.51-1.el6.x86_64.rpm
MySQL-server-5.6.51-1.el6.x86_64.rpm
MySQL-shared-5.6.51-1.el6.x86_64.rpm
MySQL-shared-compat-5.6.51-1.el6.x86_64.rpm
centos7-64位
MySQL-client-5.6.51-1.el7.x86_64.rpm
MySQL-server-5.6.51-1.el7.x86_64.rpm
MySQL-shared-5.6.51-1.el7.x86_64.rpm
MySQL-shared-compat-5.6.51-1.el7.x86_64.rpm
二、Mysql安装
2.1、查看系统版本
1、查看linux版本,命令:uname -a , 可以看到打印包含.el6.x86_64 或 .el7.x86_64
2、查看linux系统,命令: cat /etc/redhat-release,可以看到打印为CentOS release 6.10 或 CentOS release 7.5
通过上面命令,可知道我们安装的Mysql包。
2.2、移除mysql残留
一般系统在安装后,有的会包含mysql-5.1.x-libs的包,或者之前安装过mysql但未卸载的残留信息,需要删除后,在次安装。
1、搜索残留mysql,命令:rpm -qa |grep -i mysql,例如结果为:
mysql-5.1.73-8.e16_8.x86_64
mysql-libs-5.1.73-8.e16_8.x86_64
2、删除残留mysql,命令:rpm -e ,例如:
rpm -e mysql-5.1.73-8.e16_8.x86_64
rpm -e mysql-libs-5.1.73-8.e16_8.x86_64
3、一般情况下mysql-libs无法直接删除,我们可以先安装MySQL-shared-compat包替换后在删除;
rpm -ivh MySQL-shared-compat-5.6.51-1.el6.x86_64.rpm # centos 6
rpm -ivh MySQL-shared-compat-5.6.51-1.el7.x86_64.rpm # centos 7
4、针对centos7中,可能会有mariadb库,也需要删除,查询:rpm -qa |grep -i mariadb
对查询的结果按照2中删除语句rpm -e 删除mariadb;
5、针对centos7中,还需要有相关依赖包安装,分别是:libaio和net-tools,使用命令查看是否有依赖:
rpm -qa | grep libaio #结果:libaio-0.3.109-13.el7.x86_64
rpm -qa | grep net-tools #结果:net-tools-2.0-0.25.20131004git.el7.x86_64
#如果上述命令没有查询到结果,表示没有安装,可以通过yum安装,命令如下:
yum install –y libaio-0.3.109-13.el7.x86_64
yum install –y net-tools-2.0-0.25.20131004git.el7.x86_64
6、删除残留目录和配置
rm -rf /var/lib/mysql
rm -rf /usr/share/mysql
rm -rf /usr/my.cnf
2.3、准备配置文件
将my.cnf文件内容按照自己的需求修改后,上传到/etc/目录下,my.cnf配置如下:
示例配置文件使用自定义数据目录/dbdata/mysql,默认目录是/var/lib/mysql
#-----------------------------------------
[client]
port = 3306
socket = /dbdata/mysql/mysql.sock
#-----------------------------------------
[mysql]
no-auto-rehash
default-character-set = utf8
#-----------------------------------------
[mysqld]
port = 3306
socket = /dbdata/mysql/mysql.sock
datadir = /dbdata/mysql
#-----------------------------------------
server-id = 1
character_set_server = utf8
character_set_client = utf8
collation-server = utf8_general_ci
default-storage-engine = INNODB
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#-----------------------------------------
skip-name-resolve #禁止域名反向解析
skip-external-locking #防止外部锁定
#-----------------------------------------
max_allowed_packet = 64M #允许接收的最大SQL包
lower_case_table_names = 1 #表名小写,比较不区分大小写
event_scheduler = 1 #开启mysql的event任务
group_concat_max_len = 102400 #设置mysql查询的最大group_concat结果字段的最大长度
#default-time_zone = '+8:00' #如果发现mysql的时间少了可以这里设置时区
#-----------------------------------------
back_log = 500 #默认500
max_connections = 1000 #允许的最大连接数
thread_cache_size = 512 #线程缓存池大小
max_connect_errors = 10000 #允许的最大错误连接数
#-----------------------------------------
table_open_cache = 2048 #开启表缓存个数
tmp_table_size = 64M #临时表的大小,就是我们建立临时表或内存表大小
max_heap_table_size = 64M #堆栈表的大小,临时表大小受限于这个大小
#-----------------------------------------
query_cache_size= 64M #查询缓存区大小
query_cache_limit = 2M #查询缓冲区排序大小
query_cache_type = 1 #缓存类型,默认1
query_cache_min_res_unit = 2k #缓存最小单元大小,默认2k
#-----------------------------------------
sort_buffer_size = 4M #排序读缓存大小,读性能(提升order by、group by)
read_buffer_size = 4M #顺序读缓存大小,读性能
join_buffer_size = 1M #连接读缓存大小,读性能(提升join)
read_rnd_buffer_size = 4M #随机读缓存大小,读性能
#-----------------------------------------
key_buffer_size = 256M #myisam引擎,索引的缓存大小,读性能
bulk_insert_buffer_size = 32M #myisam引擎,批量写缓存大小默认8M,写性能(提升insert into)
myisam_sort_buffer_size = 64M #myisam引擎,重建索引排序缓存大小(提升alter table或repair table)
#-----------------------------------------
innodb_additional_mem_pool_size = 16M #innodb引擎,5.7废弃,建议设置16M,写性能
innodb_buffer_pool_size = 256M #innodb引擎,数据的缓存区大小,读性能
innodb_buffer_pool_instances = 8 #innodb引擎,读性能,默认8
innodb_data_file_path = ibdata1:128M:autoextend #innodb引擎,设置ibdata1共享数据存储空间初始化大小
innodb_autoextend_increment = 64 #innodb引擎,设置bdata1共享数据满后扩展大小,建议64或128
innodb_log_files_in_group = 2 #innodb引擎,设置开启几个ib_logfile文件,系统默认2
innodb_log_file_size = 64M #innodb引擎,设置ib_logfile存储空间大小,设置innodb_buffer_pool_size的25%
innodb_log_buffer_size = 8M #innodb引擎,缓存区大小,大数据可以设置16M
innodb_flush_log_at_trx_commit = 1 #innodb引擎,0延时写延时刷,1实时写实时刷,2实时写延时刷(常规1,中等写入2,大量写入0)
innodb_file_per_table = 1 #innodb引擎,表单独文件存放,如果设置为0,数据都会存放在共享存储空间ibdata1里面
#-----------------------------------------
log-error = /dbdata/mysql/mysql-error.log #错误日志地址
2.4、安装mysql
1、依次安装
# centos 6
rpm -ivh MySQL-shared-compat-5.6.51-1.el6.x86_64.rpm # 上面已装了就无需在安装
rpm -ivh MySQL-shared-5.6.51-1.el6.x86_64.rpm
rpm -ivh MySQL-server-5.6.51-1.el6.x86_64.rpm
rpm -ivh MySQL-client-5.6.51-1.el6.x86_64.rpm
# centos 7
rpm -ivh MySQL-shared-compat-5.6.51-1.el7.x86_64.rpm # 上面已装了就无需在安装
rpm -ivh MySQL-shared-5.6.51-1.el7.x86_64.rpm
rpm -ivh MySQL-server-5.6.51-1.el7.x86_64.rpm
rpm -ivh MySQL-client-5.6.51-1.el7.x86_64.rpm
2、可能在centos 6中安装MySQL-server报错,如下:
libnuma.so.1()(64bit) is needed by MySQL-server-5.6.51-1.el6.x86_64
# 说明缺少依赖包:numa包
# 可以下载numactl-2.0.9-2.el6.x86_64.rpm,并安装,或者yum安装
rpm -ivh numactl-2.0.9-2.el6.x86_64.rpm
3、安装完毕后,我们的初始root密码在/root/.mysql_secret 中查看,或者是配置文件中error-log配置的/dbdata/mysql/mysql-error.log中查看;
2.5、启动mysql并设置
1、启动mysql,命令 service mysql start,进入mysql,命令Mysql -uroot -p 输入密码,进入后是无法操作的,报错是:
You must SET PASSWORD before executing this statement
需要设置密码
SET PASSWORD = PASSWORD('123456');
flush privileges;
退出mysql,在次进入mysql,命令Mysql -h127.0.01 -uroot -p 输入密码,用同样方式在次初始化密码;以上分别是针对root账号的两个域(localhost 和 127.0.0.1)进行密码设置;也可以通过进入mysql 后,更新mysql.user表来操作;
2、日志包含proxies_priv的警告,只需要删除相关账号即可;
delete from user where Host in ('::1','localhost.localdomain','机器是主机名');
delete from proxies_priv where Host in ('::1','localhost.localdomain','机器是主机名');
3、日志告警提示max_open_files: 5000(常见于centos7)
一般情况在安装mysql后,启动错误显示max_open_files: 5000 (requested 20000),由于采用mysqld.service启动,和本地文件打开数限制有关,建议如下方式进行修改:
修改/usr/lib/systemd/system/mysqld.service中LimitNOFILE = 5000改为 65535
2.6、其他问题处理
1、mysql无法启动
常见于sellinx问题,只需要关闭即可,三种方式均可:
a、临时关闭,执行如下命令:
setenforce 0
b、取消对mysql的控制,执行如下命令:
setsebool -P mysqld_disable_trans=1
c、永久关闭,单需要重启机器:
vi /etc/sysconfig/selinux 将 SELINUX=enforcing 改成 SELINUX=disabled
2、mysql安装无法初始化
一般常发生在Mysql安装在自定义数据目录下时,安装没有报错,但在初始化时Mysql下的表都没有被创建,也无法启动,可能是因为权限问题导致。一般权限区分为目录的读写权限、目录是属组权限;
例如目录:
/dbdata/mysql/
读写权限:
注意多级目录都要设置
# chmod 755 /dbdata/
# chmod 755 /dbdata/mysql/
属组权限:
# chown -R mysql:mysql /dbdata/mysql/
在次初始化:
# /usr/bin/mysql_install_db --user=mysql --datadir=/dbdata/mysql