引子
mysql官方網站上沒有 windows mysql5.7 64位版本msi的安裝包下載,我們可以通過zip版本解壓縮後手動安裝配置環境。
msi安裝的話有32位的,基本上就是看著圖形介面來一步步操作,沒有技術含量,不在此闡述。
另外截至2018年6月份,mysql 8.0.11版本己經發布,不過大部分公司目前還是在使用mysql5.x版本的吧。有興趣的話可以提前學習一下8.0.11版本的。
不過最推薦的還是mysql被oracle收購後,使用其分支MariaDB。
環境和注意事項
- win7及以上作業系統
- MySQL5.7.22 zip格式安裝包
- 5.7版本和之前的不一樣:
- 資料夾中沒有DATA目錄
- 沒有mysql預設庫
- 沒有預設的my.ini或參考的my-default.ini
- 那是因為它的初始化方法和之前的不一樣了
- Windows的路徑使用了反斜槓(),因此,配置中使用時儘量合乎規範將反斜槓改為雙反斜槓()或直接使用斜槓(/)。(也有直接使用而不受影響的)
下載
- 下載mysql5.7.22 zip安裝包
- 官網下載壓縮包連結: https://dev.mysql.com/downloads/mysql/5.7.html#downloads
-
根據電腦配置選擇32/64位版本
-
將下載回來的mysql壓縮包解壓至適當路徑,也就是你打算以後使用的工作目錄
配置環境變數
-
配置環境變數:控制皮膚->系統和安全->系統->高階系統設定-環境變數-找到Path變數-點選編輯
-
如圖,將你自己所定的工作目錄,包含bin的路徑填進去,例如我的就是
E:mysqlin
,注意和其它變數值以英文的分號;
分隔開。
-
配置好環境變數是為了方便我們不用每次都進入到mysql的目錄下執行。接下來是配置my.ini檔案,是為了一些自定義設定。
下載回來的根目錄下沒有my-default.ini 檔案,需要直接在mysql資料夾下新建文字文件,重新命名為my.ini,my.ini配置內容如下:
[mysqld]
# 服務端配置
# 設定mysql的工作目錄,安裝包解壓後的路徑
basedir=E:\mysql
# 資料存放目錄data,需要自行新建
# 也可以使用mysqld --initialize-insecure 命令後也會自動在根目錄中生成data目錄
datadir=E:\mysqldata
# 預設連線埠3306,正式環境一般都會修改
port=3306
# 設定mysql預設字符集為utf-8
character-set-server=utf8
[client]
# 客戶端配置
default-character-set=utf8
#設定mysql預設字符集為utf-8
初始化mysql
-
在mysql根目錄下新建data空資料夾。(也可不見而等初始化命令自動建)
-
以管理員身份執行cmd命令
- mysql初始化
- 輸入cd 對應mysqlin目錄,例如我的是E:mysqlin,進入bin目錄下
- 輸入mysqld –initialize(初始化)
- 或mysqld –initialize-insecure(不安全的選項)
- 兩者取決於你是否希望伺服器生成一個擁有隨機初始密碼的
root@localhost
的賬戶。後者直接是空密碼建立。 - 為了能夠方便檢視初始化過程中的資訊,可以追加
--console
引數使mysqld將輸出資訊寫到控制檯。 - 一般linux系統才需要追加
--user=mysql
之類來指定使用者(事先設好讀寫許可權) - 例,如圖:
- 記下最後一行產生的隨機密碼。
安裝(到windwos)服務
- 同樣在管理員許可權的cmd中操作,安裝成服務更便利開機啟動。
- 輸入
mysqld --install
- 成功會如圖顯示
Servers Successfully installed
-
若需要指定配置檔案(mysql多例項的)則可以在
--install
後面跟自定義的服務名和--defaults-file
選項來指定配置檔案。
mysqld --install MySQL --defaults-file=E:mysqlmy.ini
上述命令可以在安裝時指定服務名為MySQL
以及指定配置檔案路徑,需要注意的是:--install
必須是第一個引數, 且服務名(若需指定的話)必須緊跟其後。 -
如果不想讓MySQL服務每次開機都自動啟動,可以使用
--install-manual
引數代替--install
引數。
-
- 控制檯下輸入
net start mysql
啟動mysql服務。 - 在windows的控制皮膚,服務介面下也能檢視到mysql服務。
- 解除安裝mysql服務使用的命令是
mysqld --remove
- 正常退出和關閉mysql服務使用
net stop mysql
- 也有使用mysqladmin自帶的管理工具來關閉的,前提是進入到bin目錄下執行:
mysqladmin -u root -p shutdown
例如我的是E:mysqlin>mysqladmin -u root -p shutdown
- 解除安裝mysql服務使用的命令是
- linux中我們有命令來檢視程式號和殺死程式,windows中也有,檢視相關程式號使用的是
tasklist | findstr mysql
- 殺死程式(不推薦)的是
taskkill /F /PID 程式號
- 殺死程式(不推薦)的是
- 錯誤日誌:如果 mysqld 沒能啟動成功,則可以檢視
error log
檔案,該檔案在配置檔案中指定的 datadir 目錄中,字尾名.err
。error log
檔案是可以通過--log-error
引數指定的,另外,如果想讓 mysqld 將錯誤日誌輸出到控制檯,可以使用--console
引數。
登入和重設密碼
- 啟動mysql服務,登入連線到mysql伺服器。
mysql -uroot -p
輸入前面記下的隨機密碼登入。
- 若之前你使用
--initialize-insecure
引數初始化,則使用如下命令來連線MySQL:|
mysql -uroot --skip-password
或同樣使用mysql -uroot -p
在提示輸入密碼時直接回車即可進入。
- mysql5.7強制你無論做何操作都要先將隨機密碼重設成自己定義的密碼。
-
一般第一次可用mysqladmin方式重設root密碼,如圖:
mysqladmin -uroot -p password
- 重新正常登入資料庫後,也可直接在mysql內直接修改使用者許可權或user表方式修改密碼。
- 例:
mysql> update mysql.user set authentication_string=password(``) where User="root " and host="localhost";
- 5.7以前的版本是使用
password
欄位儲存密碼的,5.7改成了authentication_string
,不容易記憶。 - 修改密碼後需要輸入
flush privileges;
命令來重新整理生效。 - 由於
authentication_string
不太容易記憶,也有直接改許可權的,例:
ALTER USER `root`@`localhost` IDENTIFIED BY `123456`
- 同樣
flush privileges;
命令來重新整理許可權即生效。
- 例:
強制跳過密碼登入
-
適用於忘記密碼或個人學習使用並不想每次連線輸入密碼,但後者可以設定密碼為空,所以此情景主要還是用在忘記密碼了,需要跳過密碼來登入後重設密碼的情景。
- 第一種,臨時跳過密碼。
- 執行
mysqld --skip_grant_tables
啟動服務 - 注意此時應再開多一個cmd視窗來作為客戶端連線服務端,登入的時候直接回車無需密碼。
- 然後就是重設密碼了。設定成功後記得停止mysqld服務,重新啟動正常需密碼的服務。
- 執行
- 第二種,需長期跳過密碼(所有使用者都不用密碼即可連線)。
- 在配置檔案,my.ini中的
[mysqld]
下新增一行
skip_grant_tables
表示跳過許可權表。 - 再執行mysql服務啟動,就是無許可權管理的連線了。極不安全,只適用於個人測試或學習環境。
- 此配置一成功後,客戶端連線mysql只需敲mysql就直接進mysql了。如圖:
- 在配置檔案,my.ini中的
-
注意,skip_grant_tables 中間間隔是下劃線。
設定友好提示符
連線上去,使用的時候,你會發覺MySQL 客戶端的預設提示符是 “mysql>”,基本上沒什麼實際作用。
修改這個提示符,讓它顯示一些有用的資訊,例如當前所在的資料庫等。
修改方法有四種,其中前兩種只對當前連線有效,後兩種則對所有連線有效。
- 1、連線客戶端時通過引數指定。
mysql --prompt="(u@h) [d]> "
這樣提示符就會變成(user@host) [database]>
其中常用的字元引數有:
D 完整的日期
d 當前資料庫
h 伺服器地址
u 使用者名稱
- 2、連線上客戶端後,通過 prompt命令
PROMPT (u@h) [d]>
修改。
例:
mysql> PROMPT (u@h)[d]>
PROMPT set to `(u@h)[d]>`
- 3、在 MySQL 的配置檔案中配置。
[mysql]
prompt=\u@\h [\d]>\
- 4、通過環境變數配置。
export MYSQL_PS1="u@h [d]> "
【end】