小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

 [筆記] MySQL 8.0 安裝步驟-zip版本

 星光閃亮圖書館 2022-05-19 發(fā)布于江蘇

目錄

1. 前言

本筆記可當(dāng)工具書使用,不斷更新各類使用中的錯誤及解決方案。

1.1 MySQL版本及選擇

關(guān)于版本的選擇,可以看另外一篇文章MySQL5.7安裝步驟

1.2 MySQL下載地址

一般從MySQL官網(wǎng)直接下,不需要到其他鏡像網(wǎng)站,誰知道鏡像網(wǎng)站會插入些什么呢?
下載地址為:https://dev./downloads/mysql/
選擇ZIP Archive版本,點擊Download即可。
到下一個頁面,可能會叫你注冊一個賬號,不想注冊賬號的,直接點“No thanks, just start my download.”就可以直接下載
在這里插入圖片描述

2. 安裝配置

2.1 說明

筆者下載的是zip包,不需要安裝,但需要配置才能用。因為筆者不喜歡注冊表裝太多東西。如果希望用自動安裝軟件的,可以在上述頁面下載MySQL Installer MIS。

2.2 系統(tǒng)設(shè)置

  1. 在開始之前,在命令行輸入mysqld --verbose --help,因為還沒配置,所以應(yīng)該顯示錯誤信息
C:\Windows\system32>mysqld --verbose --help
'mysqld' 不是內(nèi)部或外部命令,也不是可運行的程序
或批處理文件。
  1. 把下載的文件解壓,筆者解壓后的路徑如下
D:\Tools\mysql-8.0.23
  1. 在環(huán)境變量中,在系統(tǒng)變量中,在Path這個變量下,添加解壓路徑的bin目錄,按筆者上述的解壓位置,添加的值為:D:\Tools\mysql-8.0.23\bin
  2. 再打開一個新的命令行窗口一定記得是另外打開一個,不要用原來的,在命令行再次輸入mysqld --verbose --help (如果遇到錯誤,請參照4. 錯誤解決方案)
  3. 嗯,窗口會顯示很多信息,讓它滾動一會兒

到此,MySQL的系統(tǒng)配置就搞定了,是不是很簡單?但別高興得太早,還有數(shù)據(jù)庫本身的很多信息要設(shè)置。

2.3 初始化

  1. 用管理員權(quán)限打開命令行窗口,輸入mysqld --initialize-insecure --user=mysql,等待片刻,沒有出現(xiàn)錯誤信息,再次出現(xiàn)命令提示符,說明初始化成功(這里筆者認(rèn)為用戶體驗不友好,什么都沒提示,首次初始化是否成功,心里是很忐忑的)
C:\Windows\system32>mysqld --initialize-insecure --user=mysql
C:\Windows\system32>
  1. 切換到MySQL的解壓目錄下的bin目錄,再運行mySQL的安裝命令,出現(xiàn)成功的提示,則表示安裝成功
D:\Tools\mysql-8.0.23\bin>mysqld -install
Service successfully installed.
  1. 在命令行窗口輸入以下命令啟動:net start MySQL
D:\Tools\mysql-8.0.23\bin>net start MySQL
MySQL 服務(wù)正在啟動 .
MySQL 服務(wù)已經(jīng)啟動成功。
  1. 最后設(shè)定初始密碼,就完成配置了(以下Enter password那里,什么都不要輸入,直接按回車即可) mysqladmin -uroot -p password 123456(這里的123456是數(shù)據(jù)庫密碼,如果是自學(xué)用的可以設(shè)簡單一些,如果是正式用的就要設(shè)置復(fù)雜一些的密碼了)
D:\Tools\mysql-8.0.23\bin>mysqladmin -uroot -p password 123456
Enter password:
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

由于第1步初始化時使用了 –initialize-insecure 參數(shù),所以在“Enter password: ”時直接回車不用輸入密碼。不加-insecure使用mysqld --initialize命令初始化數(shù)據(jù)庫時會隨機生成密碼,這樣在修改密碼時Enter password要輸入隨機生成的密碼,如果提示需要密碼,可以打開data目錄下的.err文件,搜索"A temporary password is generated for root@localhost",最后面就是密碼

  1. 如果想刪除MySql服務(wù),先讓服務(wù)停止運行,然后用下邊命令刪除
C:\Windows\system32>sc delete mysql
[SC] DeleteService 成功

3. 如何連接MySQL

筆者用的是navicat連接的,這個工具比較簡單,自行在網(wǎng)上搜索即可。在navicat中,輸入上述端口,用戶名,密碼,即可訪問。新建連接如下:
在這里插入圖片描述

4. 錯誤解決方案

4.1 初始安裝錯誤集合

4.1.1 計算機中丟失VCRUNTIME140_1.dll

當(dāng)運行mysqld --verbose --help的時候,可能會出現(xiàn)以下錯誤
在這里插入圖片描述
出現(xiàn)問題的原因是因為電腦缺少C++運行庫,到官方網(wǎng)站下載即可。

解決方案:下載VS Redist。官方下載地址
選擇合適自己操作系統(tǒng)的版本(一般從最新的開始試起)。我選擇的是:https:///vs/17/release/vc_redist.x64.exe

安裝完需要重啟計算機

4.1.2 Install/Remove of the Service Denied!

在運行mysqld的時候,可能會出現(xiàn)以下錯誤提示,遇到這個問題,是因為執(zhí)行命令的窗口權(quán)限不夠,需要用管理員權(quán)限打開命令行窗口,即可解決問題

C:\Windows\system32>mysqld --initialize-insecure --user=mysql
Install/Remove of the Service Denied!

4.1.3 net start MySQL 發(fā)生系統(tǒng)錯誤 2。

在運行net start MySQL的時候,系統(tǒng)可能會出現(xiàn)以下提示:

C:\Users\Administrator>net start MySQL
發(fā)生系統(tǒng)錯誤 2。

系統(tǒng)找不到指定的文件。

這個原因是前面運行mysqld -install命令時,沒有在MySQL的解壓路徑下執(zhí)行。

C:\Users\Administrator>mysqld -install
Service successfully installed.

C:\Users\Administrator>net start MySQL
發(fā)生系統(tǒng)錯誤 2。

系統(tǒng)找不到指定的文件。

這個時候要運行反安裝指令mysqld -remove, 將剛才安裝的mysql反安裝,再到正確的路徑下安裝

C:\Users\Administrator>mysqld -remove
Service successfully removed.

然后切換到本機MySQL解壓的Bin目錄下重新運行安裝命令

C:\Users\Administrator>cd D:\Tools\mysql-8.0.23\bin
C:\Users\Administrator>d:
D:\Tools\mysql-8.0.23\bin>mysqld -install
Service successfully installed.
D:\Tools\mysql-8.0.23\bin>net start MySQL
MySQL 服務(wù)正在啟動 ..
MySQL 服務(wù)已經(jīng)啟動成功。

4.2 MySQL連接錯誤集合

4.2.1 ERROR 2003 (HY000): Can’t connect to MySQL server on 'localhost’ (10061)

在本地命令行窗口,輸入mysql時,出現(xiàn)該錯誤,是因為mysql沒有啟動,只需要用net start mysql啟動即可

D:\Tools\mysql-8.0.20\bin>mysql
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

4.2.1 ERROR 2003: Can’t connect to MySQL server on '192.168.3.14’ (10060)

如果遇到遠(yuǎn)程連接,同樣的錯誤,先檢查對方是否開啟了mysql服務(wù),如果確定開啟了,那就是windows防火墻沒開啟
在這里插入圖片描述

解決方案就是對應(yīng)的機器打開防火墻。如果是windows系統(tǒng),防火墻設(shè)置如下文
Windows防火墻firewall設(shè)置

4.2.2 錯誤:1251 - client does not support authentication protocol requested by server; consider upgrading MySQL client

在使用Navicat連接MySQL8.0的時候,會出現(xiàn)以下錯誤(連接5.x不會出現(xiàn))
在這里插入圖片描述
出現(xiàn)問題的原因是:mySQL5.x和MySQL8.x默認(rèn)的加密規(guī)則不同

MySQL版本加密規(guī)則
MySQL5.xmysql_native_password
MySQL8.xcaching_sha2_password

那么如何解決呢?有兩種方法:
方法1.升級navicat驅(qū)動;
方法2.把mysql用戶登錄密碼加密規(guī)則還原成mysql_native_password.

雖然caching_sha2_password 的加密規(guī)則更加安全,但筆者使用MySQL作為學(xué)習(xí),還是還原回舊的方式比較方便。所以筆者使用方法2來解決這個問題。

  1. 首先從命令行窗口進入MySQL控制臺窗口
    輸入mysql -u root -p ,填寫密碼之后,可看到提示符從 C:\Users\Administrator> 變成了 mysql>
C:\Users\Administrator>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.20 MySQL Community Server - GPL
mysql>
  1. 使用命令變更加密規(guī)則
    輸入:ALTER USER 'root’@’%’ IDENTIFIED WITH mysql_native_password BY '你的密碼’; 記得改密碼,以及最后要有分號,案例見下圖。
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.01 sec)

4.2.2.1 第2步的命令遇到以下錯誤:

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'

這是因為用戶域并不是'%’。輸入以下命令進行驗證

mysql> use mysql;
Database changed
mysql> select user, host, plugin from user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
4 rows in set (0.01 sec)

可以看到root的域是localhost,所以,語句只要改成如下就可以了:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.02 sec)

完成之后對比區(qū)別:
在這里插入圖片描述

4.2.3 錯誤:1045 - Access denied for user 'root’@'localhost’(using password:YES)

出現(xiàn)這個錯誤,是數(shù)據(jù)庫密碼錯了,需要找回創(chuàng)建數(shù)據(jù)庫時的密碼。使用正確密碼來連接
在這里插入圖片描述

4.2.4 錯誤:1130 - HOST xxx is not allowed to connect to this MySQL server

出現(xiàn)這個錯誤,是因為剛初始化之后的MySQL控制表,只允許本地訪問,那么我們需要做的,就是開放訪問控制。開放的控制可以根據(jù)通配符控制允許哪些IP訪問。操作步驟(如果對命令不熟悉,可以往后看5. MySQL常用命令):

  1. 通過命令行窗口進入MySQL控制臺窗口mysql -u {user} -p
C:\Users\Administrator>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.20 MySQL Community Server - GPL
mysql>
  1. 選擇MySQL控制數(shù)據(jù)庫 use mysql;
mysql> use mysql;
Database changed
mysql>
  1. 查看表“user”的原始數(shù)據(jù),查詢語句
    select user, host, plugin from user;
mysql> select user, host, plugin from user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

可以看到,"root"這個用戶,只有"localhost"才能訪問,這就是為什么其他的機器訪問不到的原因。
host有幾個選項可以選擇:

host的值開放權(quán)限說明
localhost只有本機可以訪問自己單機開發(fā)可以不用理會
192.168.1.%前綴為192.168.1.*的整個網(wǎng)段可以訪問在局域網(wǎng)內(nèi)有人協(xié)同開發(fā)可以使用這個
%所有人可以訪問不建議開啟

題外話,更安全的做法是新創(chuàng)建一個用戶給遠(yuǎn)程使用,而root僅保留給本機訪問。

  1. 變更root的host權(quán)限,這里筆者只打算開放給局域網(wǎng)內(nèi)使用,筆者的網(wǎng)段為192.168.124.*, 因此SQL語句如下
    update user set host = '192.168.124.%’ where user ='root’;
mysql> update user set host = '192.168.124.%' where user ='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
  1. 最后,運行刷新權(quán)限語句,令到配置立即生效
    flush privileges;
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
  1. 這就可以進行遠(yuǎn)程訪問了

4.2.5 MySQL 服務(wù)無法啟動

家里的電腦很久沒用MySQL了,有項目需要研究,build的時候發(fā)現(xiàn)MySQL連不上,手動到cmd里啟動,出現(xiàn)以下錯誤,提示:輸入NET HELPMSG 3534以獲得更多的幫助。
但是,童話里果然都是騙人的,輸入了也沒報告任何錯誤。

C:\Users\Administrator>net start mysql
MySQL 服務(wù)正在啟動 ..
MySQL 服務(wù)無法啟動。
服務(wù)沒有報告任何錯誤。
請鍵入 NET HELPMSG 3534 以獲得更多的幫助。
C:\Users\Administrator>NET HELPMSG 3534
服務(wù)沒有報告任何錯誤。
C:\Users\Administrator>

在管理服務(wù)中也是一樣
在這里插入圖片描述
重啟大法也無法解決。只好到百度上找,可行的解決方案如下:

  1. 到MySQL的安裝目錄,把data文件夾備份到其他地方,因為data文件夾里有自定義數(shù)據(jù)庫文件,如果數(shù)據(jù)重要的話,需要把相關(guān)的數(shù)據(jù)庫備份,然后放回新的data中。備份之后,data文件夾可以刪除,以確定第二步操作有結(jié)果。
  2. 在cmd窗口中輸入mysqld --initialize,運行沒有提示,但看到安裝目錄下又生成了一個data文件夾
C:\Users\Administrator>mysqld  --initialize
C:\Users\Administrator>
  1. 再次啟動MySQL。啟動成功之后,可以把備份的data文件夾刪除了。
C:\Users\Administrator>net start mysql
MySQL 服務(wù)正在啟動 .
MySQL 服務(wù)已經(jīng)啟動成功。
  1. 從備份的data文件家中,把自定義數(shù)據(jù)庫文件夾復(fù)制回來。

錯誤原因應(yīng)該是data中的log數(shù)據(jù)出錯,導(dǎo)致MySQL啟動時訪問log數(shù)據(jù)出錯。

4.2.6 ERROR 1040 (HY000): Too many connections

當(dāng)從應(yīng)用或其他地方連接發(fā)生這個錯誤的時候,即使在本機也無法通過root訪問。

C:\Users\Administrator>mysql -u root -p
Enter password: ******
ERROR 1040 (HY000): Too many connections

在解決這個問題之前,需要看是否有應(yīng)用程序正在不斷訪問數(shù)據(jù)庫,如果能找到,就把連接的應(yīng)用停止,再用root訪問,如果仍然不行,使用net stop再net start,然后用root進入mysql
在mysql console中,使用show processlist;可以查到連接數(shù)。

mysql> show processlist;
+------+-----------------+-----------------+------+---------+------+------------------------+------------------+
| Id   | User            | Host            | db   | Command | Time | State                  | Info             |
+------+-----------------+-----------------+------+---------+------+------------------------+------------------+
|    5 | event_scheduler | localhost       | NULL | Daemon  | 1815 | Waiting on empty queue | NULL             |
| 1679 | root            | localhost:53215 | NULL | Query   |    0 | starting               | show processlist |
+------+-----------------+-----------------+------+---------+------+------------------------+------------------+
2 rows in set (0.00 sec)

再運行以下命令查看最大連接數(shù)

mysql> show variables like '%max_connections%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| max_connections        | 151   |
| mysqlx_max_connections | 100   |
+------------------------+-------+
2 rows in set, 1 warning (0.00 sec)

因為我的MySQL找不到my.cnf和my.ini,所以用了命令行臨時改大連接數(shù):
set global max_connections=2000
以后看怎么進行永久性更改

4.3 忘記root密碼

MySQL5.x與 MySQL8以上的重設(shè)密碼有一些不同。主要不同之處有以下幾點:

  1. MySQL 8以上沒有my.ini文件
  2. MySQL 8以上以下2個指令都不起作用
update mysql.user set password='newpassword' where user='root';
update mysql.user set password=PASSWORD('newpassword') where User='root';

開始操作了,需要打開兩個cmd窗口。

4.3.1 窗口一

窗口一運行以下2個語句,第2個語句輸入之后,這個窗口是沒有反映了的,相當(dāng)于是鎖死了這個窗口,接下來就要到第二個窗口操作。

C:\Users\Administrator>net stop mysql
MySQL 服務(wù)正在停止.
MySQL 服務(wù)已成功停止。
C:\Users\Administrator>mysqld --shared-memory --skip-grant-tables


4.3.2 窗口二

輸入mysql -uroot -p,并且在提示輸入密碼時直接回車,看到可以成功進入mysql控制窗口了

C:\Users\Administrator>mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.20 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

如下所示輸入幾個指令。其中第4個指令中的12345678是自己設(shè)置的新密碼

use mysql;
update user set authentication_string='' where user='root';
flush privileges;
alter user 'root'@'localhost' identified by '12345678';
lush privileges;

指令效果

mysql> use mysql;
Database changed
mysql> update user set authentication_string='' where user='root';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.04 sec)

mysql> alter user 'root'@'localhost' identified by '12345678';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql>

到這里打完收工,關(guān)閉2個窗口,net start mysql開啟mysql服務(wù),可以使用新密碼訪問了

5. MySQL常用命令

5.1 進入MySQL命令行

mysql -u {user} -p
其中{user}為用戶名,命令如下,執(zhí)行該命令后,進入MySQL控制臺界面

C:\Users\Administrator>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.20 MySQL Community Server - GPL
mysql>

5.2 創(chuàng)建數(shù)據(jù)庫

create database {db name};
該語句創(chuàng)建新的數(shù)據(jù)庫

mysql> create database mydb;
Query OK, 1 row affected (0.01 sec)
mysql>

5.2 顯示所有數(shù)據(jù)庫

show databases;
執(zhí)行該命令,可以看到MySQL里所有的數(shù)據(jù)庫,該語句必須在MySQL控制臺,而不是在windows的命令行輸入。使用5.1的命令可以進入MySQL的命令行。在剛初始化MySQL之后,輸入該命令可以看到所有的數(shù)據(jù)庫。執(zhí)行效果如下

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| supermarket        |
| sys                |
| umanager           |
+--------------------+
6 rows in set (0.00 sec)

5.3 進入某個數(shù)據(jù)庫

use {數(shù)據(jù)庫名};
操作上,必須要進入某個數(shù)據(jù)庫,才能操作數(shù)據(jù)庫中的表,特別是剛初始化之后,可能其他的工具都連不上,需要通過MySQL命令行來執(zhí)行一些命令才可以使用。執(zhí)行效果如下

mysql> use mysql;
Database changed
mysql>

5.4 修改數(shù)據(jù)庫密碼

alter user 'root’@'localhost’ identified by 'newpassword’;
用這個命令,需要是已經(jīng)通過mysql -u root -p 進入數(shù)據(jù)庫。newpassword為希望設(shè)置的新密碼

alter user 'root'@'localhost' identified by 'newpassword';

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多