2021-08-04

如何將 xampp-win 中的 mariadb 換成 mysql-community 的版本

 xampp-win 中打包的資料庫好像從某個版本開始就改成 mariadb 了,雖然 mariadb 跟 mysql 在大部份的狀況下是相似的,但…mariadb好像到目前的版本(寫文章時mariadb 最新的是10.6.3)在json的使用上跟mysql不太一樣,但我比較習慣用mysql的。

那因為在 linux 中大部份的來源庫好像是mysql的版本,所以比較沒有要從mariadb換mysql的要求…但因為目前service架在windows中,所以xampp-win是用mariadb,就找了一下資料,把mariadb換成mysql engine的方式。

環境說明:

  • xampp-win
    • apache: 2.4.48
    • db: mariadb 10.4.20
  • 要更換為mysql-community 8.0.26
    • 免安裝的版本

mariadb => mysql

  • 先停止目前正在使用的xampp中的資料庫,或者是新的開始,那就先去下載xampp-win的免安裝版本,然後把xampp解壓縮
  • 將xampp中的mysql資料庫更名,更啥名都可,反正不要用「mysql」
  • 比較偷懶,把舊的mariadb中的my.ini複製並放到新的mysql/bin放,但留意,mariadb的某些版本可能等同mysql 5.7以前的版本,所以要看你舊系統上的mariadb的版本去找找對應的mysql,如果對應版差距有多的話,那最要邊執行跟設定my.ini
  • my.ini確認複製並放在mysql/bin,為啥放這,因為xampp預設讀取的位置;接著打開放完後的my.ini,然後看到在[mysqld]中先駐解掉 key_buffer的設定,以免造成後面操作系統的不便
  • 接著依續執行下列指令在cmd模式
    • 先切換xampp\mysql所在的路徑
      • cd ?:\xampp\mysql
    • 執行資料庫初始化
      • bin\mysqld --initialize-insecure
      • 等它跑完,會要一些時間
    • 指定背景啟動mysql服務
      • START /b bin\mysqld
    • 以 root 免密碼的身份登入mysql
      • bin\mysql -u root
    • 在mysql engine中建立phpmyadmin的用戶名pma@localhost
      • mysql> CREATE USER pma@localhost;
    • 在mysql engine中建立phpmyadmin主要用途的資料庫, 表
      • mysql> SOURCE ?:/xampp/phpMyAdmin/sql/create_tables.sql
    • 設定pma@localhost基本mysql的操作權限
      • mysql> GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON phpmyadmin.* TO pma@localhost;
    • 切換root, pma用戶的認證加密方式改回mysql原生方式
      • mysql> ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY '';
      • mysql> ALTER USER pma@localhost IDENTIFIED WITH mysql_native_password BY '';
    • 跳出mysql engine
      • \q OR exit
    • 停止mysql服務
      • bin\mysqladmin -u root shutdown
理論上到這邊應該都不會有太大的問題

參考資料

沒有留言: