1. 程式人生 > >xampp 中 mysql的相關配置

xampp 中 mysql的相關配置

setting mat 源碼 data 回車 sin 成功 upd 啟動mysql

最近開始接觸PHP,而一般搭建PHP環境使用的都是xampp 這個集成環境,由於之前我的系統中已經安裝了mysql服務,所以在啟動mysql的時候出現一些列錯誤,我通過查詢各種資料解決了這個問題,現在記錄一下,方便日後遇到同樣的問題時能夠快速解決,也為遇到同樣問題的朋友提供一種解決的思路。

啟動

剛開始時我在點擊啟動mysql的時候發現它一直卡在嘗試啟動mysql這個位置,xampp提示內容如下:

Attempting to start MySQL service...

它啟動不成功但是也不提示出錯,而且查詢日誌發現沒有錯誤的日誌,這個時候我想到應該是我本地之前安裝了mysql,導致失敗。而且我還將mysql安裝成為了服務,後來查詢相關資料,有網友說需要將mysql服務的地址改為xampp下mysql所在地址,具體怎麽改我就不寫了,一般都可以找到,但是我想說的是,這個方式好像在我這邊不起作用。那麽就幹脆一點直接刪除服務就好了。

sc delete mysql

上述命令直接刪除mysql這個服務。然後重啟xampp,再次啟動mysql,它終於報錯了。只要報錯就好說了,現在來查詢日誌,發現日誌如下:

2018-10-13 22:52:19 37d0 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB‘s internal memory allocator.
2018-10-13 22:52:19 14288 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.

2018-10-13 22:52:19 14288 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2018-10-13 22:52:19 14288 [Note] InnoDB: The InnoDB memory heap is disabled
2018-10-13 22:52:19 14288 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2018-10-13 22:52:19 14288 [Note] InnoDB: _mm_lfence() and _mm_sfence() are used for memory barrier
2018-10-13 22:52:19 14288 [Note] InnoDB: Compressed tables use zlib 1.2.3
2018-10-13 22:52:19 14288 [Note] InnoDB: Using generic crc32 instructions
2018-10-13 22:52:19 14288 [Note] InnoDB: Initializing buffer pool, size = 16.0M
2018-10-13 22:52:19 14288 [Note] InnoDB: Completed initialization of buffer pool
2018-10-13 22:52:19 14288 [Note] InnoDB: Highest supported file format is Barracuda.
2018-10-13 22:52:19 14288 [Warning] InnoDB: Resizing redo log from 2*3072 to 2*320 pages, LSN=1600607
2018-10-13 22:52:19 14288 [Warning] InnoDB: Starting to delete and rewrite log files.
2018-10-13 22:52:19 14288 [Note] InnoDB: Setting log file C:\xampp\mysql\data\ib_logfile101 size to 5 MB
2018-10-13 22:52:19 14288 [Note] InnoDB: Setting log file C:\xampp\mysql\data\ib_logfile1 size to 5 MB
2018-10-13 22:52:19 14288 [Note] InnoDB: Renaming log file C:\xampp\mysql\data\ib_logfile101 to C:\xampp\mysql\data\ib_logfile0
2018-10-13 22:52:19 14288 [Warning] InnoDB: New log files created, LSN=1601036
2018-10-13 22:52:19 14288 [Note] InnoDB: 128 rollback segment(s) are active.
2018-10-13 22:52:19 14288 [Note] InnoDB: Waiting for purge to start
2018-10-13 22:52:19 14288 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.39-83.1 started; log sequence number 1600607
2018-10-13 22:52:20 3508 [Note] InnoDB: Dumping buffer pool(s) not yet started
2018-10-13 22:52:20 14288 [Note] Plugin ‘FEEDBACK‘ is disabled.
2018-10-13 22:52:20 14288 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
2018-10-13 22:52:20 14288 [ERROR] Can‘t open and lock privilege tables: Table ‘mysql.servers‘ doesn‘t exist
2018-10-13 22:52:20 14288 [Note] Server socket created on IP: ‘::‘.
2018-10-13 22:52:20 14288 [ERROR] Fatal error: Can‘t open and lock privilege tables: Table ‘mysql.user‘ doesn‘t exist
2018-10-13 22:55:18 3024 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB‘s internal memory allocator.
2018-10-13 22:55:18 12324 [Note] InnoDB: innodb_empty_free_list_algorithm has been changed to legacy because of small buffer pool size. In order to use backoff, increase buffer pool at least up to 20MB.

找到其中的ERROR項,發現它提示mysql.user這個表不存在,這個表保存的是mysql的賬號信息,如果沒有這個,它無法知道哪些是合法用戶,合法用戶又有哪些權限,因此這裏就需要創建這個表。通過查詢資料發現這是由於未進行mysql數據初始化的緣故,這個錯誤經常見於通過源碼包在編譯安裝的時候。這個時候需要使用命令 mysql_install_db 來初始化數據庫表

mysql_install_db --user=mysql -d C:\xampp\mysql\data\

-d 後面跟上mysql表數據所在路徑

執行之後發現程序又報錯了,這次提示mysql的版本不對

Can‘t find messagefile "D:\mysql-8.0.11-winx64\share\errmsg.sys". Probably from another version of MariaDB

這個時候就很奇怪了,我啟動的是xampp中的mysql,為何它給我定位的是之前安裝的MySQL所在路徑呢?出現這種現象肯定是系統中的相關配置的路徑不對,之前已經刪掉了mysql服務,那麽應該不可能會是服務配置導致的,剩下的應該就是環境變量了,通過一個個的查看環境變量,終於發現了 MYSQL_HOME這個變量給的是 D:\mysql-8.0.11-winx64 這個路徑,我們將這個環境變量的值修改為xampp中mysql的路徑然後再執行命令初始化mysql表數據,這個時候成功了。

完成了這些操作,我這邊就可以通過xampp面板啟動mysql了。

數據庫配置

剛開始時使用root賬戶登錄是不需要密碼的,這樣是很危險的操作,容易發生數據泄露,為了安全起見,首先給root賬戶輸入一個復雜的密碼

mysqladmin -uroot -p password

回車之後它會讓你輸入新的密碼,如果是修改密碼可以使用下面的命令

mysqladmin -uroot -p"test" password

其中test為原始密碼
在回車之後它會讓你輸入新的密碼
技術分享圖片

我們為root設置了一個相對復雜的密碼,但是與Linux系統相似,為了安全一般不能隨便給出root賬戶,這個時候就需要一個非root賬戶並為它設置相關權限,我們可以在進入mysql後,使用grant 命令來創建賬戶以及分配權限

grant all privileges on *.* to masimaro@localhost identified by "masimarotest";
flush privileges;

它的語法格式為: grant 權限 on 數據庫.表 to 用戶名@主機 identified by "密碼"

  • 權限,all privileges 表示所有權限,如果不想分配所有權限,可以考慮使用 select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file 權限中的任意一個或者多個。
  • 數據庫,表:我們可以指定具體的用戶對具體的數據庫表有何種權限
  • 主機:主機可以是localhost,%(任意主機),或者具體的主機名、ip等等,表示這個賬戶只能通過對應的主機來登錄

分配完成之後通過 flush privileges; 語句來保存我們分配的賬戶和權限

為了方便操作,還可以對phpmyadmin進行配置,以便能夠使用phpmyadmin來連接並操作mysql數據庫。

可以在phpmyadmin目錄中找到 config.inc.php 文件,找到這麽幾行

$cfg[‘Servers‘][$i][‘user‘] = ‘‘; //連接數據庫的用戶
$cfg[‘Servers‘][$i][‘password‘] = ‘‘; //連接數據庫的用戶密碼

$cfg[‘Servers‘][$i][‘host‘] = ‘127.0.0.1‘; //數據庫所在主機

$cfg[‘Servers‘][$i][‘controluser‘] = ‘root‘; //phpmyadmin 所使用的配置賬戶
$cfg[‘Servers‘][$i][‘controlpass‘] = ‘‘; //配置賬戶的密碼

根據具體情況配置這些信息之後,就可以直接連上PHPmyadmin了,然後根據它的提示來初始化相關數據庫和表即可


xampp 中 mysql的相關配置