基本步骤
- 创建mysql用户组以及mysql用户
#查看当前登录用户的组内成员
groups
#查看mysql用户所在的组以及组内成员
groups mysql
#添加用户组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
- 卸载旧版本的mysql
#列出旧版本的mysql组件
rpm -qa | grep mysql
#删除rpm包
rpm -e --nodeps filename
- 解压RPM压缩包,依次安装RPM安装包
#解压RPM压缩包
tar -xvf mysql-XXX.rpm-bundle.tar
#安装rpm包
rpm -ivh filename
- 配置mysql配置文件,配置文件夹相关权限
mysql配置文件如下,需要确保datadir的目录权限、socket目录权限、log-error目录权限、pidFile目录权限为mysql:mysql。
[mysqld]
datadir=/home/data/mysql
socket=/var/lib/mysql/mysql.sock
character_set_server=utf8
character_set_filesystem=utf8
symbolic-links=0
max_connections=1000
wait_timeout=1800000
innodb_buffer_pool_size=6G
slow_query_log = ON
slow_query_log_file = /home/data/mysql/slow.log
long_query_time = 1
max_allowed_packet = 20M
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
tmpdir=/home/data/tmp
innodb_file_per_table=1
[mysqld_safe]
log-error=/home/data/mysql/mysqld.log
pid-file=/home/data/mysql/run/mysqld/mysqld.pid
[client]
- 启动mysql进程,设置密码、用户权限
#可以使用service服务启动mysql
service mysqld start
#也可以使用mysqld_safe启动mysql服务
mysqld_safe --user=mysql &
#启动完成后需要重新设置密码
set password = 'newpassword'
#重新设置密码后需要设置ip权限
GRANT ALL ON *.* TO 'test'@'%' IDENTIFIED BY 'pwd';
flush privileges;
可能会碰到的问题
linux 打开文件数 too many open files
参考文章:Linux打开文件数too many open files
在Rhel6上我碰到过一个问题,导入一个17G大小的.sql备份文件,结果在导入的过程中出现错误,本来正常连接的mysql客户端也连接不上了,命令台报错信息显示Too many open files in system,后来找到这篇博客,可能是由于linux对单个用户能够打开的最大文件个数有限制,使用ulimit -n 20480来重新设置最大连接数。
Fatal error:mysql.user table is damaged.Please run mysql_upgrade
此时可以删除mysql配置文件中的datadir文件夹,重新启动service mysqld start生成新的文件。
也可以直接使用mysqld_safe --skip-grant-tables启动mysqld进程。
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 43. The table is probably corrupted
参考文章:Mysql创建用户时报错
由于我从低版本mysql导出数据,然后导入到高版本的mysql数据库中,从而导致mysql系统表的数据有所差异,解决方法是使用/usr/local/mysql-5.7.18/bin/mysql_upgrade -S /data/mysql/3311/mysql.sock命令即可。