赞
踩
随着互联网技术不停的发展,一些应用程序在使用的过程中,其中的漏洞就会慢慢的被发现。不法分子就会利用这些漏洞对我们的应用程序进行攻击、获取企业的信息等。
其中数据库服务器是企业应用中很重要的一环,其中保存着企业,用户的重要数据库。所以对于数据库的漏洞更加应该重视。
为了应该组件中出现的漏洞,组建的厂商会不定期的发布新的版本,去修复老版本中的bug和漏洞。我们只需下载新版本的程序升级即可。
由于以前的项目使用的数据库是mysql 5.6.X版本,随着业务的发展,发现5.6.X版本中已经无法满足业务的需要,比如,5.6.X中许多函数就无法使用。而且在实际生产中,安全厂商对5.6.X进行漏洞扫描,5.6.X存在漏洞。
考虑到上面的两个原因,这里决定将mysql 5.6跨版本升级到mysql 5.7
下载mysql 5.7
mysql的安装文件从官方网站下载,官网地址:https://downloads.mysql.com/archives/community/
查看当前mysql版本
select version();
或
mysql -V
mysql> show variables like "sql_mode";
+---------------+--------------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------------+
| sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
1 row in set (0.07 sec)
# cd /opt
# mkdir /opt/mysql5.7
# tar xf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar -C mysql5.7
mysql5.7的压缩文件会解压出10个rpm文件
[root@server opt]# ll mysql5.7
总用量 533048
-rw-r--r-- 1 7155 31415 27768112 12月 19 2019 mysql-community-client-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 318972 12月 19 2019 mysql-community-common-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 4085448 12月 19 2019 mysql-community-devel-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 47521016 12月 19 2019 mysql-community-embedded-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 23354680 12月 19 2019 mysql-community-embedded-compat-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 131015588 12月 19 2019 mysql-community-embedded-devel-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 2596180 12月 19 2019 mysql-community-libs-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 1353080 12月 19 2019 mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 183618644 12月 19 2019 mysql-community-server-5.7.29-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 124193252 12月 19 2019 mysql-community-test-5.7.29-1.el7.x86_64.rpm
# mysqldump -uroot -p --add-drop-database --event --routines -A -Y -B >/opt/mysql5.6/mysql_all_backup.sql
SQL> set global innodb_fast_shutdown=0
关闭此缓存的原因是为了避免版本不通而导致的缓存差异
# systemctl stop mysql
注意:测试发现,升级时不关闭数据库也可以,升级完成后数据库会被重新启动,若升级时关闭了数据库,升级完成后记得重新启动数据
# yum install perl-JSON
perl-JSON依赖包安装完成后使用命令进行升级mysql
[root@server mysql5.7]# rpm -Uvh mysql-community-*.rpm 警告:mysql-community-client-5.7.29-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:mysql-community-common-5.7.29-1.e################################# [ 6%] 2:mysql-community-libs-5.7.29-1.el7################################# [ 12%] 3:mysql-community-client-5.7.29-1.e################################# [ 18%] 4:mysql-community-server-5.7.29-1.e警告:/etc/my.cnf 已建立为 /etc/my.cnf.rpmnew ################################# [ 24%] 5:mysql-community-devel-5.7.29-1.el################################# [ 29%] 6:mysql-community-embedded-5.7.29-1################################# [ 35%] 7:mysql-community-embedded-devel-5.################################# [ 41%] 8:mysql-community-test-5.7.29-1.el7################################# [ 47%] 9:mysql-community-libs-compat-5.7.2################################# [ 53%] 10:mysql-community-embedded-compat-5################################# [ 59%] 正在清理/删除... 11:MySQL-test-5.6.48-1.el7 ################################# [ 65%] 12:MySQL-embedded-5.6.48-1.el7 ################################# [ 71%] 13:MySQL-devel-5.6.48-1.el7 ################################# [ 76%] 14:MySQL-client-5.6.48-1.el7 ################################# [ 82%] 15:MySQL-server-5.6.48-1.el7 ################################# [ 88%] 16:MySQL-shared-compat-5.6.48-1.el7 ################################# [ 94%] 17:MySQL-shared-5.6.48-1.el7 ################################# [100%]
升级完成后,启动数据库,使用命令检查mysql当前版本
[root@server mysql5.7]# systemctl start mysqld
[root@server mysql5.7]# mysql -V
mysql Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using EditLine wrapper
[root@server mysql5.7]# mysql upgrade -uroot -p111111 --force mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1049 (42000): Unknown database 'upgrade' [root@server mysql5.7]# mysql_upgrade -uroot -p111111 mysql_upgrade: [Warning] Using a password on the command line interface can be insecure. Checking if update is needed. Checking server version. Running queries to upgrade MySQL server. Checking system database. mysql.columns_priv OK mysql.db OK mysql.engine_cost OK mysql.event OK mysql.func OK mysql.general_log OK mysql.gtid_executed OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK mysql.help_topic OK mysql.innodb_index_stats OK mysql.innodb_table_stats OK mysql.ndb_binlog_index OK mysql.plugin OK mysql.proc OK mysql.procs_priv OK mysql.proxies_priv OK mysql.server_cost OK mysql.servers OK mysql.slave_master_info OK mysql.slave_relay_log_info OK mysql.slave_worker_info OK mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK mysql.time_zone_name OK mysql.time_zone_transition OK mysql.time_zone_transition_type OK mysql.user OK Upgrading the sys schema. Checking databases. sys.sys_config OK up.acct_loan_record OK up.acct_loan_record_app OK up.acct_loan_record_sync OK up.accumulation_fund OK up.act_ge_bytearray OK up.act_ge_property OK up.act_hi_actinst OK up.act_hi_attachment OK up.act_hi_comment OK up.act_hi_detail OK up.act_hi_identitylink OK up.act_hi_procinst OK up.act_hi_taskinst OK up.act_hi_varinst OK up.act_re_deployment OK up.act_re_model OK up.act_re_procdef OK up.act_ru_event_subscr OK up.act_ru_execution OK up.act_ru_identitylink OK up.act_ru_job OK up.act_ru_task OK up.act_ru_variable OK up.active_award_record OK up.active_award_record0917 OK up.active_cookie_info OK up.active_cookie_info0917 OK up.active_mch_transfer_serial0917 OK up.active_transfer_serial OK up.active_transfer_serial0917 OK up.activity_award_level OK up.activity_award_pool OK up.activity_award_pool0917 OK up.activity_award_pool_20200609 OK up.activity_award_pool_new OK up.activity_award_pool_temp OK ...... Upgrade process completed successfully. Checking if update is needed.
mysql_upgrade检查完成后要重启mysql数据库
[root@server mysql5.7]# systemctl restart mysqld
若升级完后,为使用mysql_upgrade进程检查,则在使用时可能会报错,这里给出一个遇到的错误:
在使用查询mysql参数配置
SQL> show variables like "sql_mode";
若未使用mysql_upgrade进行检查,则会报如下错误
ERROR 1146 (42S02): Table 'performance_schema.session_variables' doesn't ...
使用mysql_upgrade升级后问题解决
总结:
到此mysql升级完成,其中需要注意:
1、升级前一定要备份数据库。
2、升级完成后,使用mysql_upgrade进行新旧版本数据库兼容性的检查。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。