本文目錄一覽:
MySQL 數據文件遷移至新硬碟
[mysqld]
# * Basic Settings
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /data/c/mysql 修改
#datadir =/var/lib/mysql
這個原因有二,其中任意的一個原因都會造成你被系統告知這個warning。如果你不是一個專業的linux系統安全工程師,或者你只是個PHP程序員,並沒有對系統安全有深入的研究,你就不會太容易找到它的答案。
第一,selinux,記得當年念書時,字元界面安裝redhat(很古老的操作系統么。。。)的時候,有這麼一個選項,通常大家都聽取前輩的建議,改變默認值以不安裝它。但如果你恰好要操作的這台機器開著selinux,它確實能夠使你的mysql無法在新目標位置進行mysql_install_db的操作,並爆出標題所示的警告。一個簡單的解決辦法是使用命令暫時關閉selinux,以便讓你的操作可以繼續下去 setenforce 0 但最好使用一個永久方法,以便在重啟後繼續不要這貨。 修改/etc/selinux/config文件中設置SELINUX=disabled ,然後重啟或等待下次重啟。
第二,apparmor,這個坑爹貨和selinux一樣的坑爹,它也對mysql所能使用的目錄許可權做了限制 在 /etc/apparmor.d/usr.sbin.mysqld 這個文件中,有這兩行,規定了mysql使用的數據文件路徑許可權
/var/lib/mysql/ r, /var/lib/mysql/** rwk,
你一定看到了,/var/lib/mysql/就是之前mysql安裝的數據文件默認路徑,apparmor控制這裡mysqld可以使用的目錄的許可權 我想把數據文件移動到/data/mysql下,那麼為了使mysqld可以使用/data/mysql這個目錄,照上面那兩條,增加下面這兩條就可以了
/data/mysql/ r, /data/mysql/** rwk,
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/datc/c/mysql/ r,
/data/c/mysql/** rwk,
/var/lib/mysql-files/ r,
/var/lib/mysql-files/** rwk,
/data/c/mysql-files/ r,
/data/c/mysql-files/** rwk,
/var/lib/mysql-keyring/ r,
/var/lib/mysql-keyring/** rwk,
/data/c/mysql-keyring/ r,
/data/c/mysql-keyring/** rwk,
apparmor,/etc/inid.d/apparmor restart//////////// /etc/init.d/apparmor restart
如何把sqlserver數據遷移到mysql資料庫及需要注意事項
在項目開發中,有時由於項目開始時候使用的資料庫是SQL Server,後來把存儲的資料庫調整為MySQL,所以需要把SQL Server的數據遷移到MySQL。下面是小編日常整理的一種sqlserver資料庫遷移的方法。
一、SQL Server中常用數據類型與MySQL不同的地方
二、將SQL Server數據遷移到MySQL需要注意的一些問題
1、唯一索引的不同,sql server的唯一索引的欄位只能允許存在一個null值,而mysql,一直oracle中唯一索引對應的欄位都允許存在多個null值。
2、存儲過程的語法存在很大的不同,存儲過程的遷移是最麻煩的,需要仔細修改。
3、程序中部分寫的SQL語句由於語法的不同也要相應的修改。
三、將SQL Server數據遷移到MySQL的常見方法
1、使用 SQLyog 遷移
優點
該遷移方法很簡單,靈活,遷移時,可以進行欄位的修改,比如在sql server中原來是datetime,然後遷移到mysql時你可以配置成timestamp;成功率很高;
缺點
遷移很慢!這是該方法最大的缺點,如果表的數據量達到幾十萬行,甚至幾百萬行,你會發現遷移起來真的很慢。明顯比其他遷移方法慢很多。
2、使用 powerdesigner 和 sql server 的腳本導出功能 來遷移
(1)、該方法首先使用 powerdesigner,對sql
server資料庫,進行逆向工程,得到E-R圖,然後生成MySQL的建表語句。完成資料庫結構的遷移;當然表結構的遷移,不使用
powerdesigner一樣也是可以的。比如我將表結構導出成語句,然後手動進行修改,然後在MySQL中運行,也是一樣的;
(2)、然後使用 sql server的工具 SSMS,將sql server資料庫中的表的數據,導出成insert語句,每個表對應導出一個文件,然後對文件進行一些處理,然後導入到MySQL資料庫中。
3、使用Oracle MySQL Server 官方的 workbeach 工具進行遷移
(1)、在workbench 連接sql server時,用戶需要有 view any database 的許可權。不然workbench無法訪問sql server的表結構的元數據,從而無法進行遷移。
(2)、還有使用 Navicat 來進行遷移的方法,方法和 SQLyog 是類似的。
mysql5.1的資料庫如何遷移至mysql5.7?
安全的辦法是在舊環境導出表數、在新環境建立資料庫後導入表,可以使用SQL或者TXT為中間文件。
如何遷移MySQL資料庫
caching_sha2_password認證插件提供更多的密碼加密方式,並且在加密方面具有更好的表現,目前MySQL 8.0選用caching_sha2_password作為默認的認證插件,MySQL 5.7的認證插件是MySQL_native_password。如果客戶端版本過低,會造成無法識別MySQL 8.0的加密認證方式,最終導致連接問題。
MySQL存儲引擎現在負責提供自己的分區處理程序,而MySQL伺服器不再提供通用分區支持,InnoDB和NDB是唯一提供MySQL 8.0支持的本地分區處理程序的存儲引擎。 如果分區表用的是別的存儲引擎,存儲引擎必須進行修改。要麼將其轉換為InnoDB或NDB,要麼刪除其分區。通過MySQLdump從5.7獲取的備份文件,在導入到8.0環境前,需要確保創建分區表語句中指定的存儲引擎必須支持分區,否則會報錯。
MySQL 8.0的默認字符集utf8mb4,可能會導致之前數據的字符集跟新建對象的字符集不一致,為了避免新舊對象字符集不一致的情況,可以在配置文件將字符集和校驗規則設置為舊版本的字符集和校驗規則。
MySQL 8.0啟動使用的lower_case_table_names值必須跟初始化時使用的一致。使用不同的設置重新啟動伺服器會引入與標識符的排序和比較方式不一致的問題。
lower_case_table_names
要避免MySQL 8.0上的啟動失敗,MySQL配置文件中的sql_mode系統變數不能包含NO_AUTO_CREATE_USER。
從MySQL 5.7.24和MySQL 8.0.13開始,MySQLdump從存儲程序定義中刪除了NO_AUTO_CREATE_USER。必須手動修改使用早期版本的MySQLdump創建的轉儲文件,以刪除NO_AUTO_CREATE_USER。
在MySQL 8.0.11中,刪除了這些不推薦使用的兼容性SQL Mode:DB2,MAXDB,MSSQL,MySQL323,MySQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS。從5.7到8.0的複製場景中,如果語句使用到廢棄的SQL Mode會導致複製異常。
在執行到MySQL 8.0.3或更高版本的in-place升級時,BACKUP_ADMIN許可權自動授予具有RELOAD許可權的用戶。
本文對MySQL 5.7到MySQL 8.0的升級過程中出現部分易出現問題進行整理:升級對MySQL版本的要求、升級都做了哪些內容、資料庫升級做了哪些步驟以及注意事項,希望對大家版本升級有幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/289583.html