一、官网下载二进制包
https://downloads.mysql.com/archives/community/
选择Linux – Generic版本下的X86,64bit TAR Archive版本下载
二、删除老版本mysql
1.查找以前是否装有mysql,命令:rpm -qa|grep -i mysql
例可以看到mysql的两个包:
mysql-4.1.12-3.RHEL4.1
mysqlclient10-3.23.58-4.RHEL4.1
2、删除mysql,删除命令:rpm -e --nodeps 包名
shell> rpm -ev mysql-4.1.12-3.RHEL4.1或
shell> yum -y remove mysql-4.1.12-3.RHEL4.1
3、删除老版本mysql的开发头文件和库
命令:
shell> rm -fr /usr/lib/mysql
shell> rm -fr /usr/include/mysql
注意:卸载后/var/lib/mysql中的数据及/etc/my.cnf不会删除,如果确定没用后就手工删除
shell> rm -f /etc/my.cnf
shell> rm -fr /var/lib/mysql
三、安装新版本mysql
1. 解压至安装目录
shell> tar zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
假设解压目录为/opt/local/mysql
2.安装流程可参照官网https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html,下面只是带一些解释性操作
#mysql需要依赖libaio,所以安装前最好检查下依赖是否已经安装
shell> yum search libaio # search for info
shell> yum -y install libaio # install library
#建立用户和用户组
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
可以man useradd看参数说明。-r创建的是系统帐号,一般用来做系统服务的,MySQL建议做为系统服务来运行,所以建议创建系统帐号,同时禁止直接以mysql用户身份登录系统,所以使用-s /bin/false参数
shell> cd mysql
#新建mysql-files,data,sock,pid,log目录,其中log目录下要新建mysqld.log文件
shell> mkdir mysql-files data sock pid log
shell> vim log/mysqld.log
#更改目录下所有文件的所有权
shell> chown -R mysql:mysql .
#更改前面创建文件夹的执行权限
shell> chmod -R 775 mysql-files data sock pid log
#初始化,此处在最后会生成root的初始密码,一定要记下来,否则无法登录
shell> bin/mysqld --initialize --user=mysql --basedir=/opt/local/mysql --datadir=/opt/local/mysql/data
#因为从mysql5.7开始不再提供默认my.cnf,这里需要手动在建立
shell> vim /etc/my.cnf
#安装mysql
shell> bin/mysql_ssl_rsa_setup
#启动mysql
shell> bin/mysqld_safe --user=mysql &
#将mysql做为开机启动服务
shell> cp support-files/mysql.server /etc/init.d/mysql.server
#将mysql做为全局可访问项
shell> ln -s /opt/local/mysql/bin/mysql /usr/bin/mysql
#修改/etc/profile,添加mysql目录,否则mysqladmin等命令会无法访问
MYSQL=/opt/local/mysql
PATH=$MYSQL/bin:$PATH
export PATH
#修改root密码为可自己的密码
mysqladmin -uroot password 自己的密码 -p
附:my.cnf配置一份
[mysqld]
datadir=/opt/local/mysql/data
user=mysql
socket = /opt/local/mysql/sock/mysql.sock
symbolic-links=0
port= 3306
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 64
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
innodb_thread_concurrency = 8
max_connections=1000
skip-name-resolve
log-bin=mysql-bin
binlog_format = "MIXED"
server-id = 1
innodb_buffer_pool_size = 512M
innodb_log_buffer_size = 80M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
character-set-server = utf8
collation-server = utf8_general_ci
tmpdir = /tmp
explicit_defaults_for_timestamp = true
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
long_query_time = 2
log_slow_queries
[client]
port = 3306
socket = /opt/local/mysql/sock/mysql.sock
[mysqld_safe]
log-error=/opt/local/mysql/log/mysqld.log
pid-file=/opt/local/mysql/pid/mysqld.pid
#增加每个进程的可打开文件数量
open-files-limit = 65536
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES