windows操作系統(tǒng)下MySQL5.7、8.0的data目錄變更方法以及一些相關(guān)問題(MYSQL8的my.ini位置在哪里)
[重要通告]如您遇疑難雜癥,本站支持知識付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時間哦!
現(xiàn)在我們的盤都是SSD硬盤,讀寫速度都快,我們也懶得分區(qū),有些時候我們裝軟件也喜歡裝在C盤,運(yùn)行快,不過有些時候的數(shù)據(jù)還是比較重要的,不光是快的問題,也要安裝,比如我們安裝的mysql,會安裝在C盤,數(shù)據(jù)庫存儲目錄的Data就要放在其他盤符比較好,下面就來說說如何的更換Mysql的目錄;
windows環(huán)境安裝MySQL8.0,默認(rèn)安裝在C盤的;
basedir是:C:\Program Files\MySQL\MySQL Server 8.0\bin
datadir 是:C:\ProgramData\MySQL\MySQL Server 8.0\data? ?#這是一個隱藏文件夾
現(xiàn)在想把datadir遷移到E盤,做法是:
1、關(guān)閉數(shù)據(jù)庫服務(wù)
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqladmin -uroot -piris shutdown
2、將整個data目錄剪切到E盤相應(yīng)文件夾(我在E盤下新建了一個Mysql文件夾,E:\mysql)下:
將原data文件夾整個剪切到mysql下。
新的datadir是:E:\mysql\Data。
并在mysql下新建 “tmp_data”和“slave_data”兩個文件夾,為參數(shù)tmpdir和slave_load_tmpdir的值。
tips:注意新的Mysql和data文件夾的權(quán)限處理。
3、修改配置文件my.ini:
修改datadir的路徑后,修改my.ini配置文件。
my.ini的配置文件應(yīng)該在“C:\Program Files\MySQL\MySQL Server X.Y\?”? 目錄下。? ?#X.Y代表MySQL的版本號
我的配置文件是:C:\Program Files\MySQL\MySQL Server 8.0\my.ini
補(bǔ)充:
1.有關(guān)于datadir路徑更換的配置內(nèi)容主要如下
basedir=C:/Program Files/MySQL/MySQL Server 8.0/bin
datadir=E:/mysql/Data
tmpdir=E:/mysql/tmp_data
slave_load_tmpdir=E:/mysql/slave_data
lc-messages-dir=C:/Program Files/MySQL/MySQL Server 8.0/share? ?#錯誤消息文件存在的目錄
lc-messages="en_US"? ? ? ? ?#錯誤消息的語言環(huán)境。默認(rèn)是 en_US。可將參數(shù)轉(zhuǎn)換為其他語言
log_timestamps=SYSTEM? ? ? ?#錯誤日志顯示的時間
secure-file-priv=E:/mysql/Uploads
general-log=0? ? ? ?#關(guān)閉普通日志
general_log_file=e:/mysql/data/iris_bin.log? ? ? ?#二進(jìn)制文件
slow_query_log_file=e:/mysql/data/iris-slow.log? ?#慢日志文件
slow-query-log=1? ?#慢查詢時間閾值
long_query_time=1
exec_time=20 #SQL執(zhí)行超過20秒自動終止
# Binary Logging.
log-bin=e:/mysql/data/iris-bin
log-error=e:/mysql/data/iris-err.err
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
default_authentication_plugin=mysql_native_password? #修改用戶的身份驗(yàn)證插件。原默認(rèn)用戶身份驗(yàn)證插件是caching_sha2_password,安全性和性能都較好,但是不支持8.0一下版本的客戶端&連接器
2、指定了log_timestamps=system的影響:
log_timestamps,錯誤日志顯示時間,指定為system,即我的是"+8:00"(因?yàn)閣indows環(huán)境的system_time_zone就是我計算機(jī)的時間,北京時間)。
配置前后錯誤日志內(nèi)容如下:
配置前:
2018-12-13T02:44:24.378145Z 0
2018-12-13T02:44:20.021582Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.13) starting as process 143496
2018-12-13T02:44:20.021686Z 0 [ERROR] [MY-010338] [Server] Can't find error-message file 'C:\Program Files\MySQL\MySQL Server 8.0\bin\share\errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
2018-12-13T02:44:24.378145Z 0 [ERROR] [MY-010119] [Server] Aborting
配置后:
2018-12-13T11:29:00.337768+08:00 0
2018-12-13T11:29:00.337768+08:00 0 [ERROR] [MY-010361] [Server] Fatal error: Illegal or unknown default time zone 'UCT'
2018-12-13T11:29:00.342668+08:00 0 [ERROR] [MY-010119] [Server] Aborting
2018-12-13T11:29:32.462444+08:00 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
4、修改完配置文件后,直接啟動數(shù)據(jù)庫即可
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld
tips:
針對data文件夾整個的遷移,如果不修改my.ini配置文件也是可以的。
每次啟動的時候帶上--datadir=data_dir_comm就行,即:
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --datadir=e:\mysql\data
而且,我的my.ini位子并沒有挪動,如果my.ini文件也遷移 了、位子也變了,那么啟動的時候一定要帶上--defaults-file參數(shù)。
-----------------------------------------------------------------------------------------------------
其他:關(guān)于“iris_err.err錯誤日志”顯示時間例子里兩段日志內(nèi)容補(bǔ)充說明:(都是粗心導(dǎo)致的報錯(?﹏?))
問題1:
Can't find error-message file 'C:\Program Files\MySQL\MySQL Server 8.0\bin\share\errmsg.sys'-->找不到錯誤消息的文件,路徑錯誤
解決:
改為:Can't find error-message file 'C:\Program Files\MySQL\MySQL Server 8.0\share\'
share下面都是各種語言系統(tǒng)的報錯文件,指定到share。
配置文件里面 lc-messages-dir和lc-messages,一般是配套使用的,一個記錄路徑,一個在選擇路徑下眾多語言里選一個。
當(dāng)然,指定了lc-messages-dir,不寫lc-messages也是可以的。lc-messages默認(rèn)是“en_US”。
問題2:
Fatal error: Illegal or unknown default time zone 'UCT''-->指定的默認(rèn)時區(qū)值是不合法的(也就是不存在這樣的值,)
解決:
配置文件my.ini中指定的系統(tǒng)默認(rèn)時區(qū)值有誤,正確寫法是UTC。但我的配置文件里改成“+0:00”、“+8:00”的值等模式。使用UTC這種時區(qū)名字需要在time_zone_name表里有對應(yīng)關(guān)系才行,因?yàn)槲业腗ySQL的time_zone_name表是空的。
------------------------------------------------------
- 在C:\ProgramData\MySQL\MySQL Server 5.7文件夾
- my.ini是默認(rèn)的配置文件。在這里我們只更改數(shù)據(jù)存儲路徑。不更改配置文件
1 # Path to the database root 2 datadir=C:/ProgramData/MySQL/MySQL Server 5.7/Data
將96行后面的值修改為需要的路徑即可
自定義的文件夾需要在安全屬性里面添加network service的訪問權(quán)限,不然會觸發(fā)10061(2003)的錯誤。
PS:mysql在Windows下使用network service權(quán)限運(yùn)行
問題未解決?付費(fèi)解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當(dāng)無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!