跳到主要內容

發表文章

目前顯示的是有「mysql」標籤的文章

已經吧Xampp改為使用mysql8後再次升級mysql8到官方最新版的方法(Windows限定)(手動升級)

之前寫過一篇  Xampp將MariaDB改為mysql8.0的方法!!並且可以隨時替換回MariaDB!! 的工作心得,當時安裝在XAMPP上的Mysql版本為8.01,現在官方最新穩定版都釋出到8.041了,為了讓本地端的工作環境與客戶端ubuntu安裝的Mysql8.041一致,決定手動升級本地端Xampp的Mysql版本,成功升級方法如下: 1、先吧Xampp面板Panel的Apache及Mysql關閉 2、備份 XAMPP 中的mysql資料夾,C:\xampp\mysql → 改名為 mysql_backup,萬一升級失敗還能復原。 3、下載 MySQL 官方版 ZIP(非安裝版)前往: https://dev.mysql.com/downloads/mysql/ Platform: Windows Package: Windows (x86, 64-bit), ZIP Archive 建議版本:8.0.41 4、下載回來後解壓縮更改資料夾名稱為mysql,放到C:\xampp的根目錄裡面(C:\xampp\mysql),替換原本被改名為 mysql_backup的mysql資料夾 5、搬移原有資料庫檔案(如果已有資料) C:\xampp\mysql_backup \ data \ 吧data複製放到以下位置 C:\xampp\mysql\data 6、搬移原有my.ini到新目錄 C:\xampp\mysql_backup\bin\ my.ini 吧my.ini複製放到以下位置 C:\xampp\mysql\bin\my.ini 7、重新啟用Xampp面板Panel的Apache及Mysql,確定都有亮綠燈,然後測試登入phpmyadmin 8、如果phpmyadmin輸入帳號密碼無法登入,但Mysql有啟用,需要再次設定密碼(data沒完全執行),方法如下: ->若 MySQL 可啟動但無法登入 ALTER USER 'root'@'localhost' IDENTIFIED BY ' 你的新密碼 '; FLUSH PRIVILEGES; ->如果遇到錯誤訊息顯示找不到使用者或權限錯誤,可改用以下方式: ALTER USER 'root'@'localhost...

Ubuntu22.04分拆安裝(Apache / PHP / MySQL/ phpMyAdmin)的方法

為了應對越來越頻繁的資安通報,解決方案就是用PPA各別安裝Apache / PHP / MySQL/  phpMyAdmin套件,這樣如果遇到資安通報可立即升級修補漏洞,確保系統安全,晚上也好睡覺,以下是分拆安裝(Apache / PHP / MySQL/  phpMyAdmin)的安裝方法步驟說明: 步驟1. 安裝Apache/PHP 為了取得Apache官網最新版本及PHP最新版本,這裡使用 Ondřej Surý 的 PPA套件 ※輸入以下指令下載PPA套件 sudo apt update sudo apt install -y software-properties-common sudo add-apt-repository -y ppa:ondrej/apache2  sudo add-apt-repository -y ppa:ondrej/php ※安裝 Apache 2.4.63(包含 OpenSSL) sudo apt install -y apache2 apache2-utils ssl-cert openssl ※確認 Apache 版本及是否安裝 apache2 -v 應該會顯示: Server version: Apache/2.4.63 (Ubuntu) Server built:   (日期資訊) ※啟動並設定開機自動啟動 Apache sudo systemctl enable apache2 sudo systemctl start apache2 接下來安裝PHP套件及設定 ※安裝 PHP 8.3 及所需的擴充功能 sudo apt install -y php8.3 libapache2-mod-php8.3 php8.3-cli php8.3-common \ php8.3-curl php8.3-gd php8.3-mbstring php8.3-mysql php8.3-sqlite3 \ php8.3-xml php8.3-zip php8.3-intl php8.3-bcmath php8.3-imagick ※確認 PHP 版本 php -v 如果返回 PHP 8.3 .x (cli) (built: ...) Copyright (c) The PHP...

Xampp將MariaDB改為mysql8.0的方法!!並且可以隨時替換回MariaDB!!

說真的我個人是覺得MariaDB很好用,尤其是root的認證方式採用mysql_native_password驗證,與mysql5.7版相同,與PHP及xoops也沒有兼容性問題,那為什麼要吧Xampp的MariaDB替換為mysql8.0,主要是為了做兼容性測試,因為很多虛擬主機都改用mysql8.0,做一個程式開發者開發的模組必須能在各種環境都下正常運作,所以提供了以下替換方式方便測試,說明如下: 1、先進入phpmyadmin中吧資料表匯出備份(轉換為mysql8.0後需要再匯入一次) 2、在windows上使用【系統管理員身分】開啟XAMPP的Panel,然後吧MySQL關閉。 3、確認關閉後,前往MySQL官方網站下載mysql->zip檔回本地端: https://dev.mysql.com/downloads/mysql/ 4、將Xampp目錄中的mysql改為mysql_M   既為  c:\xampp\mysql 變更為 c:\xampp\mysql_M  5、將下載的ZIP Archive解壓縮後更名為mysql,並複製到c:\xampp根目錄中,所以您的c:\xampp根目錄底下因該會有 c:\xampp\mysql_M c:\xampp\mysql 兩個資料夾 6、以【系統管理員身分】開啟XAMPP的Panel->點選右邊的Shell開啟終端機,輸入以下指令安裝mysql8.0 ->輸入cd c:\xampp\mysql\bin ->輸入mysqld.exe --default-authentication-plugin=mysql_native_password --initialize-insecure --basedir=c:\xampp\mysql --datadir=c:\xampp\mysql\data 接下來稍等約1分鐘,就會看到終端機開始執行mysql8.0套件安裝程序到完成。 7、找到以下目錄c:/xampp/mysql/bin/->建立一個my.ini檔,用筆記本打開貼上以下設定 [mysqld] port=3306  basedir=c:\xampp\mysql datadir=c:\xampp\mysql\data socket=c:\xa...

Xoops忘記管理密碼->修改資料表重建密碼方法-教學撰寫:徐嘉裕Neil hsu

如果忘記Xoops管理員密碼,想要修改資料庫中資料表取回,首先必須要有進入phpmyadmin的權限,進入phpmyadmin後在左邊選單找到XOOPS網站的資料表名稱,點擊進入資料表列,然後使用瀏覽器的搜尋功能(ctrl+F),輸入users,找到被標註的users資料表,點擊進入 進入users資料表後,找到管理員帳號 (看uname欄位) ,點選左邊的編輯 然後使用瀏覽器搜尋(ctrl+F),輸入pass,找到密碼欄位,將右邊的文字框清空,輸入新密碼,這裡用(12345)做測試,然後吧右邊的類型選擇MD5 按下方的執行儲存更新 之後輸入 帳號admin 跟密碼 12345 就能用管理員登入Xoops網站了,有需要的朋友參考看看! 教學撰寫: 徐嘉裕 Neil hsu

解決CentOS安裝XAMPP後MariaDB大量產生err的方法-[ERROR] Incorrect definition of table mysql.column_stats: expected column 'max_value' at position 4 to have type varbinary(255), found type varchar(255)-教學撰寫:徐嘉裕Neil hsu

最近靈異事件真的很多,像是完全按照官網版本安裝的XAMPP7.4X在CentOS上,照理說官方釋出的版本因該都正常的吧,沒想到一運行XAMPP就產生大量的.err檔,而請增加速度非常快,不用幾天就會吧root撐爆,不處理也不行 先來看一下.err錯誤訊息內容(.err位置在/opt/lampp/var/mysql/ xxx.err ) 2021-04-12  8:33:48 13 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'max_value' at position 4 to have type varbinary(255), found type varchar(255). 2021-04-12  8:33:48 13 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'min_value' at position 3 to have type varbinary(255), found type varchar(255). 2021-04-12  8:33:48 13 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'max_value' at position 4 to have type varbinary(255), found type varchar(255). 是說table的mysql表裡面的column_stats欄位預設是varchar(255),但正確因該是varbinary(255),但mysql表不是MariaDB的系統預設表嗎??怎麼會出錯......真是見鬼了! 但不解決又不行,因為err會一直增加,那只能修改欄位類型了! 在phpmyadmin->mysql->sql執行以下sql語法 use mysql;  alter table column_stats modify column max_value varbinary(255);  alter table colum...

CentOS->XAMPP變更檔案或資料夾 擁有人/群組 的方法-教學撰寫:徐嘉裕Neil hsu

將備份的XAMPP中下載回本地端的MYSQL的DB檔再次上傳回主機卻無法使用,原因是在於 擁有人/群組 設定不一樣,CentOS中的XAMPP->MYSQL路徑在/opt/lampp/var/mysql/資料表目錄,可以看一下擁有人/群組 預設都是mysql/mysql,但重新上傳後DB的擁有人/群組卻變成root/root或其他,所以自然無法讀取資料,解決方法就是修改  擁有人/群組 改為mysql/mysql,方法如下 使用以下的指令: sudo chown -R mysql:mysql   /opt/lampp/var/mysql/DB Folder 紅字 為變更 擁有人/群組 綠字 為需要變更的資料夾路徑,這樣指令就會以遞迴方式吧整個DBFolder裡面全部的DB通通改為mysql:mysql DBFolder->您的資料庫資料夾名稱 然後再去phpmyadmin中查看就能看到原本的資料表了。 另外還有其他用法 單一變更 擁有人/群組 非全體 sudo chown  mysql:mysql    /opt/lampp/var/mysql/DB Folder 參考資料來源: https://blog.gtwang.org/linux/linux-chown-command-tutorial/ 工作心得撰寫: 徐嘉裕 Neil hsu

解決/opt/lampp/bin/mysql.server: 264: kill: No such process-無法啟用mysql的方法(CentOS)-教學撰寫:徐嘉裕Neil hsu

今天客戶突然告知學校的網站無法連線,我去看了一下LAMPP是啟用的,但MYSQL無法啟動,會顯示 /opt/lampp/bin/mysql.server: 264: kill: No such process 客戶說前幾天有跳電伺服器沒正常關機,按照經驗法則大概又是err在作怪,先輸入指令查一下客戶伺服器容量  df -l   結果如下圖   可以看到root 容量已到100%,然後問題又是mysql無法啟用,那就來找一下mysql的log資料夾看問題出在哪? /opt/lampp/var/mysql/ xxxxx. err 如果有發現紅字的 .err 檔案就是導致系統容量100%及MYSQL無法初始化的元凶,吧.err刪除後重啟LAMPP就能恢復正常了。 刪除err後再看一下容量,root 容量變為17% 重新啟動xampp,輸入指令: /opt/lampp/xampp restart 這樣MYSQL就恢復正常運作了,不過err還是需要處理不然很快root又要100%,可以先用root權限看一下.err裡面是哪些錯誤資訊,如果是 2021-04-12 8:33:48 13 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'max_value' at position 4 to have type varbinary(255), found type varchar(255). 我有寫一篇解決的方法可以參考看看 https://neohsuxoops.blogspot.com/2021/04/centosxamppmariadberr-error-incorrect.html 有需要的朋友參考看看。 工作心的撰寫: 徐嘉裕 Neil hsu

修改CentOS7->Xampp->MariaDB->sql_mode的方法(資料庫模式修改)-教學撰寫:徐嘉裕Neil hsu

之前寫過一篇修改本地端Windows架設xampp的sql_mode嚴格模式設定方法,有需要的朋友可以參考看看! https://neohsuxoops.blogspot.com/2019/12/1048-mariadb-sqlfor-windows.html 現在的問題是本地端Windows架設的xampp跟CentOS7架設的Lampp的sql_mode完全不一樣! 本地端(Windows) sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION 伺服器端(CentOS7) sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 當然如果以模組開發者的角度是採用更為嚴謹的資料庫模式設定,也就是伺服器端的資料庫模式來開發Xoops模組,所以我們開發的Xoops模組基本上這兩種模式都能運行! 但問題來了,Xoops還是有許多不錯的免費模組可以安裝,而且客戶也會自行安裝不是我們開發的模組,假設客戶端的sql_mode為超嚴謹模式,那這些模組都無法使用,會產生客戶管理網站的困擾,解決方法只能修改客戶端sql_mode改為較為寬鬆的 sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION 設定,這樣不管是我們開發的模組,還是客戶自己去安裝的模組就都能正常運作了, 修改CentOS7->Xampp->MariaDB->sql_mode的方法如下: 1、找到以下目錄,用筆記本打開 /opt/lampp/etc/my.cnf 2、找到[mysqld],在參數最下面加上 sql_mode = NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION ※預設是沒有sql_mode [mysqld] user=mysql port=3306 socket =/opt/lampp/var/mysql/mysql.sock key_buffer=16M max_allowed_packet=...

10.4.8-MariaDB->SQL嚴格模式設定方法(for-windows)-教學撰寫:徐嘉裕Neil hsu

說起來也奇怪至今仍不解哪出問題了?本地端跟客戶端同樣都是安裝XAMPP-7.3.11版,但客戶端的sql_mode設定卻和本地端不相同,導致許多模組本地端是正常的但上傳到客戶端後都無法使用,資料存取出錯或無法寫入,經過檢查發現XAMPP的windows版本跟CentOS版本my.ini配置是不一樣的! 先來看一下my.ini設定->windows版 sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION 資料庫設定是使用 NO_ZERO_IN_DATE NO_ZERO_DATE NO_ENGINE_SUBSTITUTION 再來看CentOS->my.ini設定 sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 資料庫設定是使用 STRICT_TRANS_TABLES ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION 差別在時間格式及預設值部分,為了讓本地端跟客戶端的設定一致,所以修改本地端的my.ini吧sql_mode替換為以下的設定值 sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 重新啟用MYSQL後再SQL輸入 SELECT @@GLOBAL.sql_mode看設定是否有生效! 如果顯示設定值跟my.ini中設定一樣就可以了,關於資料庫sql_mode常用值說明可以參考這個網站 http://xstarcd.github.io/wiki/MySQL/MySQL-sql-mode.html 先讓本地端跟客戶端設定一致,然後才來調整SQL語法,才能做升級工作喔!! 教學心得撰寫: 徐嘉裕 Neil hsu

XAMPP for Windows 7.3.6 快速更改mysql密碼方法-教學撰寫:徐嘉裕

按照XAMPP官網說明修改phpMyAdmin密碼簡單很多不用那麼麻煩了,只需要開啟XAMPP Shell命令提示符下指令跟修改config.inc.php即可,方法如下: 開啟XAMPP Control Panel,點選右邊的Shell按鈕 2,輸入以下的指令-按Enter送出 mysqladmin.exe -u root password secret 紅字部分為mysql的登入密碼,可以改成自己需要的 3、找到config.inc.php這支檔 xampp/phpMyAdmin/config.inc.php用筆記本打開 $cfg['Servers'][$i]['auth_type'] = 'http';  //這裡改成http $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = 'secret';  //這裡改成剛剛變更的密碼 $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['AllowNoPassword'] = true; $cfg['Lang'] = ''; 儲存後,再次進入phpMyAdmin就會跳出輸入密碼框,輸入設定的密碼就可以進入管理資料表了!! 教學撰寫: 徐嘉裕 Neil hsu

寫一個PHP高效率資料表交叉條件查詢方法!!-教學撰寫:徐嘉裕Neil hsu

在開發模組功能最怕遇到就是多條件的資料表交叉查詢,例如查詢資料表條件A+條件B,但又可單獨查詢條件A及條件B,如果只有1-2個查詢項目還好,但如果同時有5個或更多的查詢項目,有時候容易出錯,所以想出來一個高效率又方便的交叉查詢function寫法分享給大家!! 例如像下面這個介面圖有5項查詢功能,要能同時查詢單項及多項交叉查詢並將結果顯示右方的總表內容中!! 這樣必須設資料表的where查詢條件!如果一個一個判斷,5項查詢會產生5*5=25總組合!會寫到累死,所以乾脆直接function起來批次處理!! //資料交叉查詢組合 function crossquery($where=""){ foreach($where as $key=> $val){ $wherevar.=$val; } $wherevar=!empty($wherevar) ? "where ".$wherevar."" : ''; // get TRUE //去除最後字元 $wherevar=substr($wherevar,0,-4); return $wherevar; } 這樣就吧查詢條件全部交叉組合起來了,只需要在要讀取資料表的php檔中呼叫crossquery()函式並吧$where陣列直送入 //資料交叉查詢 $wherevar['0']=!empty($setuptime) ? "`setuptime` LIKE '%$setuptime%' and " : false; //時間有值 $wherevar['1']=!empty($enfunction) ? "`enfunction` = '".$enfunction."' and " : false; //功能有值 $wherevar['2']=!empty($basid) ? "`basid` = '".$basid."' and " : false; //單位有值 $wherevar[...

Xoops吧多個資料表合併顯示按照建立日期排序在一個table中的方法-教學撰寫:徐嘉裕Neil hsu

之所謂關關難過關關過,遇到問題就要爆肝解決了阿?阿不然呢!! 講這麼多也是要抱怨一下,目前遇到一個問題就是客戶有4個資料表,分別是影片/相片/新聞/檔案,四個表都是獨立的,需要做一個總表吧4個表的內容按照建立時間排序顯示,之前一直卡在join的邏輯中解不出來,後來才想到join主要是做資料表欄位關連,而不是合併顯示,上網查了一下mysql操作手冊終於讓我找到一個可以解決問題方法,真是感動阿,用UNION ALL就可以解決了阿,方法如下。 //重點說明-很重要 使用UNION ALL查詢的多個資料表的欄位名稱都要相同才能抓地到數值,例如資料表table1中的name欄位那table2也必須要相同的name欄位名稱,欄位格式也都需相同,才能抓到兩個表的相同資料。 資料表 table1  ID TITLE TIMES NAME1 1 影片標題01 2018-10-18 AAA 2 影片標題02 2018-9-18 BBBBB 資料表 table2 ID TITLE TIMES NAME2 1 相片標題01 2018-10-17 AAA 2 相片標題02 2018-9-17 BBBBB 資料表 table3 ID TITLE TIMES NAME3 1 新聞標題01 2018-10-16 AAA 2 新聞標題02 2018-9-16 BBBBB 資料表 table4 ID TITLE TIMES NAME4 1 檔案標題01 2018-10-15 AAA 2 檔案標題02 2018-9-15 BBBBB 我們只需要取...