1. 程式人生 > >MySQL5.6.4升級到5.6.40遇到的一些坑

MySQL5.6.4升級到5.6.40遇到的一些坑

      維護的一個老專案,資料庫版本過低,出現了一系列的MySQL高危漏洞,總之一大堆高危漏洞,解決此問題有兩種解決辦法,一個是升級MySQL,一個是改資料庫版本,從安全性角度考慮,還是需要升級MySQL為上策,升級過程的一些小經驗和大家分享一下。

      首先說明的是升級的是windows版本的MySQL,當時沒有注意是64位還是32位,直接上的64位,出現了一些小插曲,在32位作業系統上無法啟動,尷尬了。。。。。。建議提前瞭解清楚背景。廢話不多說,直接上過程。

       第一步自然是下載同一版本不同小版本號的MySQL,官網最新的是5.6.40,地址直接貼上https://dev.mysql.com/downloads/mysql/,windows下載zip免安裝的即可,navicat for mysql l第一次連線資料庫可能會出錯如下


本地IP(xxx.xxx.xxx.xxx)沒有訪問遠端資料庫的許可權。於是下面開啟本地IP(xxx.xxx.xxx.xxx)對遠端mysql資料庫的訪問許可權。需要加上相應許可權,解決辦法度娘一下,步驟如下:

解決辦法:

1.首先遠端連線進入伺服器,在cmd中輸入mysql -u root -p,然後回車,輸入密碼後回車進入mysql命令列。 
這裡寫圖片描述

2.輸入use mysql;

這裡寫圖片描述

3.輸入select user,password,host from user; 
可以看到host中只有localhost主機。我們需要將xxx.xxx.xxx.xxx也新增到這裡才對。

這裡寫圖片描述

4.新增方法如下:

輸入 ​GRANT ALL PRIVILEGES ON *.* TO ‘root’@’xxx.xxx.xxx.xxx’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;

這相當於是給IP-xxx.xxx.xxx.xxx賦予了所有的許可權,包括遠端訪問許可權。

然後再輸入 
flush privileges; 
這相當於是重新載入一下mysql許可權,這一步必須有。

這裡寫圖片描述

5.再次輸入select user,password,host from user; 
可以看到host中已經有了新加的IP。

這裡寫圖片描述

6.現在再次用Navicat for MySQl訪問遠端mysql資料庫,已經能正常打開了。 
問題解決。

7.如果還是連線不到,那是不是 MySQL Server 綁定了本地地址,開啟 my.ini,

找到:bind-address = 127.0.0.1

連線上了資料庫後,需要建立相應原有資料庫,加上訪問許可權、角色控制吧啦吧啦一堆東西,然後就是匯入資料庫表、資料等等

最後就是啟動程式驗證一下,第一次啟動果然出現了問題,資料庫啟動指令碼沒有生效,配置檔案不生效,原來是自己的問題,MySQL5.6.X版本預設配置檔案是my-default.ini,為了原有指令碼起作用,就改成了XXX.ini,直接點選mysqld.jar,自然不生效,服了自己的想象力了。

按正確的啟動方式,程式起來了,但是報一堆錯,如

1、Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci

2、org.quartz.JobPersistenceException: Database error recovering from misfires. [See nested exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1]

3、Load file D:/data/loadCache/20180530/Cache1527670713802-edcache_1527671350479 fail, error: 
java.sql.SQLException: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

一個一個的解決

第一個問題,錯誤本質原因:出現了兩種字符集。

1)

SHOW VARIABLES LIKE 'character_set_%'; 檢視一下 顯示
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8|
| character_set_connection | utf8|
| character_set_database | latin1 |
| character_set_results | utf8|
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /home/jh/mysql/share/mysql/charsets


2)
再用 SHOW VARIABLES LIKE 'collation_%'; 檢視一下 顯示
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |




3.解決辦法:
SET character_set_database =utf8;
SET character_set_results =utf8;
SET character_set_server =utf8;
SET character_set_system =utf8; /*此處utf-8也可以*/
SET collation_server = utf8_general_ci;
SET collation_database = utf8_general_ci;


執行完之後,請檢查mysql下每個資料庫,表,欄位是否都是utf8,不是則改過來,這樣子就不會出現

第二個問題是mysql-connector-java.jar版本過低,改成mysql-connector-java-5.1.46-bin.jar即可解決

第三個問題可以很清楚地從提示看到是因為mysql服務啟用了–secure-file-priv,所以才無法執行。 
那麼–secure-file-priv又是什麼東東,應該如何解決才能是它可以備份呢? 
--secure-file-priv=name : 
Limit LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE() to files within specified directory


可以看到secure-file-priv引數是用來限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()傳到哪個指定目錄的。


當secure_file_priv的值為null ,表示限制mysqld 不允許匯入|匯出


當secure_file_priv的值為/tmp/ ,表示限制mysqld 的匯入|匯出只能發生在/tmp/目錄下


當secure_file_priv的值沒有具體值時,表示不對mysqld 的匯入|匯出做限制


檢視資料庫當前該引數的值 
show global variables like '%secure%'; 
+------------------+-------+ 
| Variable_name | Value | 
+------------------+-------+ 
| secure_auth | ON | 
| secure_file_priv | NULL | 
+------------------+-------+ 
2 rows in set (0.00 sec)


清楚地看到secure_file_priv 的值是NULL,說明此時限制匯入匯出的 
所以應該改變該引數 
可是查看了mysql.cnf中居然沒有對這個引數進行設定,就說明這個引數預設便是null 
所以再mysql.cnf中的[mysqld]加入secure_file_priv = 
再重啟mysql服務 
然後再查一下此時引數的值


show global variables like '%secure%'; 
+------------------+-------+ 
| Variable_name | Value | 
+------------------+-------+ 
| secure_auth | ON | 
| secure_file_priv | | 
+------------------+-------+ 
2 rows in set (0.00 sec)

大概就是這麼些坑,如有不清楚的地方,還請批評指導!

相關推薦

PHP 5.4升級5.6後訪問SQLServer失敗

首先是升級後根本忘記還有SQLServer連線這回事了。結果客戶端莫名其妙報錯了。一直覺得是資料庫自己的問題。連上去一看,原來報告sqlsvr_connect不能用了。恍然大悟。1. 修改php.iniextension=php_mssql.dllextension=php_

Sonarqube5.6.4升級6.7.6的安裝步驟以及一些故障處理方式

pack 數據庫配置 start 地址 版本 extension 中一 文件 hang 升級說明自動處理多個非LTS版本的升級。但是,如果在遷移路徑中有LTS版本,則必須先遷移到此LTS,然後再遷移到目標版本。遷移路徑為5.6.4 - > 5.6.7 LTS - &g

MySQL5.6.4升級5.6.40遇到的一些

      維護的一個老專案,資料庫版本過低,出現了一系列的MySQL高危漏洞,總之一大堆高危漏洞,解決此問題有兩種解決辦法,一個是升級MySQL,一個是改資料庫版本,從安全性角度考慮,還是需要升級MySQL為上策,升級過程的一些小經驗和大家分享一下。      首先說明的是

mysql5.1升級5.6步驟以及出現問題解決方法

1、先看看有沒有老的mysql rpm -qa |grep -i mysql 有條目出現,刪除 mysql5.1 yum remove mysql* 2、安裝rpm包 rpm -ivh mysql

centos 6.4 升級python到版本2.7.12

figure ftp tar .com 下載 http nbsp python2 zxvf 註意:需要root權限查看python版本:python --version1.下載Python-2.7.12wget https://www.python.org/ftp/pyth

菜鳥崛起 DB Chapter 4 MySQL 5.6的數據庫引擎

需要 操作系統 並發控制 客戶端 改變 一個數據庫 apt 限制 文件的 數據庫存儲引擎是數據庫底層的軟件組件,我們平常看不到,但是卻與我們操作數據庫息息相關。DBMS使用數據引擎進行創建、查詢、更新和刪除數據操作。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能

2018-1-6 45次課 zip壓縮、tar打包

lac add 位置 內容 需要 rec 大文件 all exc 6.5 zip壓縮工具★zip支持壓縮目錄前期準備:[root@localhost d6z]# tree aminglinux/ aminglinux/ ├── 2 │ └── 2.txt └── ami

2018.1.6 45次課

復制 ins sun http pan b2c off font 合成 四周第五次課(1月6日)6.5 zip壓縮工具6.6 tar打包6.7 打包並壓縮6.5 zip壓縮工具1. zip壓縮包在Windows和Linux中都比較常用,它可以壓縮目錄和文件,壓縮目錄時,需要

異步社區本周(4.30-5.6)半價電子書

PowerShell IP 訪談 點擊上方“異步社區”,選擇“置頂公眾號”技術幹貨,第一時間送達本周半價電子書《數據科學家訪談錄》【美】Carl Shan(單研), William Chen(陳子蔚), Henry Wang(汪強明), Max Song(宋邁思) 著點擊封面購買紙書 本書選取世界

Centos6.4 + mysql-5.6.38-linux-glibc2.12-x86_64.tar 實現mysql主從復制

ide mysql-bin log_file color log-bin mysq fig isam 直接 mysql安裝方法:http://www.cnblogs.com/lin3615/p/4376224.html 用到的是兩臺服務器 主:192.168.1.1

ELK從5.6.3升級6.3.0總結

gist lds kibana super alloc 決定 自己 earch 來看 ELK從5.6.3升級到6.3.0總結 由於6.3.0默認有es的監控功能,並且我們現在es總是有各種問題,原有的es開源插件head和HQ的監控都不夠詳細,所以決定升級es集群。我們目前

mysql 5.5升級5.6報錯:ERROR 1193 (HY000) at line 84: Unknown system variable 'have_csv'

首先登陸資料庫沒有問題呀,但是有報錯, 文字顯示: ERROR 1193 (HY000) at line 84: Unknown system variable 'have_csv' ERROR 1064 (42000) at line 86: You have an error in yo

mysql 5.1升級5.6

 1、MySQL官方網站下載MySQL的YUM源,   https://dev.mysql.com/downloads/repo/yum/   在MySQL的下載頁有一個“NEW!MySQL YUM Repository”,點進去找相對應的系統rpm包進行下載 如果你的Lin

elasticsearch -6.4.1 kibana-6.4.1 logstash-6.5.4同步mysql windows環境

1.下載elasticsearch-6.4.1 選擇windows 環境下的包,然後減壓放到d盤,建議檔案建名稱使用用英語。 2.修改config\elasticsearch.yml檔案 把前景的#去掉 設定叢集名字:cluster.name: cluster-name 設定IP: net

PHP 7.1 + Apache 2.4 + MySQL 5.6非整合環境配置

最近因為一個專案需要用到PHP環境,嫌整合環境“髒”(只是個人用軟體方面的潔癖……不喜歡那種強行集合的東西,現在的整合環境真的還可以,但是我過不了自己心理這關……),就自己扒貼+看各種亂七八糟教程,終於摸索出了PHP 7.1 + Apache 2.4 + MyS

MySQL升級-5.6升級5.7版本&切換GTID模式

#1 安裝新版本mysql ## 下載mysql5.7.17,拷貝到server下的/opt檔案目錄下 ## 解壓,建立軟連線,授權 tar zvxf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz ln -s /opt/mysql-5.7.17-linux-g

CentOS怎麼從6.x升級6.4最新版

centos 6.4 已經在幾天前釋出了。 centos 6.4 的主要改進有: ——增加微軟Hyper-V驅動,在微軟Hyper-V伺服器上,CentOS作為虛擬機器可以更加高效; ——samba4庫升級至最新版本,完善了與Active Directory(AD)

從VMWare 6.0 升級6.5 後滑鼠不能自由出入的問題

      新年伊始,先給大家問個好:過年好!祝大家牛年牛氣沖天,Happy 一整年!       下面我就說說這上班頭一天遇到的怪事兒。       配置概況:      P4 2.8G      512M DDR * 2      主機 Windows XP + SP3

win10 64位親身體驗搭建apache2.4+php-5.6.x整合環境

注:本文只針對Apache2.4.x+PHP5.6.x,本人新身體驗搭建可用; 步驟一、下載並解壓縮PHP5 a) 下載頁面:http://www.php.net/downloads.php b) 選擇下載最新版本的PHP 5.6.x zip,Apache選擇Threa

Centos6.8在沒有安裝gcc的情況下安裝gcc6.1(從4.4升級6.1)

由於原來的centos6.8安裝的桌面版本,內建的包比較多,所以今天安裝了一個centos-6.8-minimal版本,預設安裝的是沒有gcc的環境,所以手動進行了安裝配置:1,首先檢查gcc,g++是否存在    命令:        gcc -v         g++