無法使用mysql怎么辦,mysql連接不了怎么辦

mysql打不開了怎么辦

工具/原料

馬邊彝族ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創新互聯公司的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

已經安裝了mysql數據庫的windows

操作系統

筆者安裝的mysql版本為5.6,即mysql

5.6

方法/步驟

首先,需要關閉mysql

server服務。在“運行”窗口,輸入“services.msc”,進入“服務”窗口。

在服務窗口,可以找到“mysql56”,選定,將其“停止”即可。

這樣,mysql

server服務就停止了。

需要說明的是,這里的“mysql56”受版本限制。舉例來說,如果你的mysql的版本是5.1,那么此時就是就是“mysql51”。

當然,也可以在命令行窗口使用“net

stop

mysql56”來停止服務。

接著,需要使用到mysql的安裝位置。如果忘記了,可以在“開始”按鈕(windows鍵)找到安裝“mysql”文件夾,打開并選擇“mysql

server

5.6”文件夾,會看到兩個mysql

commond

打開的快捷方式。選擇其中的一個查看其屬性,就可以找到mysql的安裝位置。

可以看到我們的mysql位置在“d:\program

files\mysql”

其實,我們之所以想知道mysql的安裝位置,是為了獲取其下的.ini文件的位置。該文件記錄了mysql的配置信息。如果我們想跳過登錄權限,就必須獲取該文件的位置。

需要注意的是,不同版本的.ini文件的名稱不同,在mysql

5.1時,它是my.ini,而在mysql

5.6則是my-default.ini。

接著,打開命令行窗口,輸入如下的命令:

c:\users\wangmysqld

--defaults-file="d:\program

files\mysql\mysql

server

5.6\my-default.ini"

--console

--skip-grant-tables

需要說明的是,此時該窗口不可再寫入。這也是檢驗命令是否正確執行的一個標準。

另外打開一個命令行窗口,輸入命令:mysql

-u

root

-p,回車即可進入mysql命令行界面。

7

接下來,只需要修改系統數據庫,將密碼進行更新即可。

需要使用到的命令是:

mysql-show

database;

mysql-use

mysql

mysql-update

user

set

password=password('12345')

where

user='root';

這樣,就將新密碼設為了12345。

面試官:MySQL權限表損壞導致無法啟動怎么辦?

一、背景

近期,公司RDS云產品的MySQL Server版本進行升級,由目前使用的5.7.26版本升級到最新版本5.7.31;升級后測試同學發現:在MySQL創建用戶后,5.7.31版本重新啟動集群會出現啟動失敗的現象;而5.7.26版本在相同測試場景下是正常啟動的。這到底是為什么呢?

二、問題復現

2.1 實驗環境

2.2 操作步驟

按照測試同學的測試步驟,首先創建一個用戶:

然后關閉mysqld;這里需要介紹一下,我們集群的關閉方式是如下方式:

這種方式的內部實現類似于kill -9模式。所以我在線下環境使用kill -9的方式來復現,操作如下:

然后重啟mysqld,操作如下:

此時問題復現了,mysqld啟動失敗,我們查看了下error日志,信息如下:

根據報錯信息可以看出:MySQL的權限系統表發生了損壞,導致了mysqld啟動失敗;由于在MySQL 5.7及其之前版本該表是MyISAM引擎,且該引擎不支持事務,所以在mysqld異常崩潰會導致該類型引擎表的損壞;但在mysqld啟動時是有參數控制MyISAM引擎的恢復模式,且該參數在我們產品中也配置到了my.cnf中,如下所示:

2.3 參數解析

對于該參數的官方文檔的解釋如下:

設置MyISAM存儲引擎恢復模式。選項值是OFF、DEFAULT、BACKUP、FORCE或QUICK的值的任意組合。如果指定多個值,請用逗號分隔。指定不帶參數的選項與指定DEFAULT相同,指定顯式值" "將禁用恢復(與OFF值相同)。如果啟用了恢復,則mysqld每次打開MyISAM表時,都會檢查該表是否標記為已崩潰或未正確關閉。(只有在禁用外部鎖定的情況下運行,最后一個選項才起作用。)在這種情況下,mysqld在表上運行檢查。如果表已損壞,mysqld將嘗試對其進行修復。

服務器自動修復表之前,它將有關修復的注釋寫到錯誤日志中。如果您希望能夠在無需用戶干預的情況下從大多數問題中恢復,則應使用選項BACKUP,FORCE。即使某些行將被刪除,這也會強制修復表,但是它將舊的數據文件保留為備份,以便您以后可以檢查發生了什么。

全局變量,只讀變量,默認為OFF。

三、問題修復

這類MySQL用戶表損耗的問題解決方式也是有多種,我這里列舉其中一種:

(1)my.cnf中的[mysqld]標簽下添加skip_grant_tables,啟動時跳過加載系統字典。

(2)重啟mysqld,然后修復mysql schema下的所有表。

(3)在[mysqld]標簽下注釋或刪除掉skip_grant_tables,然后重啟mysqld。

此時mysqld是可以正常啟動的,無異常。

四、深入排查

在產品化中,以上修復方式很不優雅,只是作為臨時的解決方案;并且也存在一些令人疑惑的點:

帶著這些疑問,我們繼續排查出現該現象的原因;此時Google也沒有找到一些有效的信息,那么只能通過MySQL源代碼來尋找一些答案。

首先需要下載mysql 5.7.31版本的源代碼,并搭建mysql debug環境;具體步驟可以自動Google搜索一下,本文就不再贅述了。

在源代碼中搜索一下關鍵詞,用于打斷點的位置,然后進行調試:

定位到相關代碼,大概是sql/mysqld.cc的4958行,且存在if條件判斷,此時我們開始調試:

通過以上調試信息,可以判斷出acl_init函數返回的值為真;此時我們查看該函數的代碼 (sql/auth/sql_auth_cache.cc:1365):

根據該函數的注釋發現:該函數是初始化負責用戶/數據庫級特權檢查的結構,并從mysql schema中的表中為其加載特權信息;且return值為1代表的是初始化權限失敗。

此后開始逐步調試,觀察return相關信息,當調試到lock_table_names函數時,我們發現在Phase 3時return值為true,且根據代碼注釋發現true代表是Failure;具體代碼如下(sql/sql_base.cc:5549):

調試信息如下:

可以看到flags的值為0,而MYSQL_OPEN_SKIP_SCOPED_MDL_LOCK為宏定義值0x1000,與flags的值 做按位與操作,結果自然也是0,當然MYSQL_LOCK_IGNORE_GLOBAL_READ_ONLY也是如此;need_global_read_lock_protection是bool類型值,代表是否需要全局讀鎖的保護,這個值是在table- mdl_request.type不為MDL_SHARED_READ_ONLY發生改變;check_readonly函數相關信息 下面概述。

此時也查看了下MySQL 5.7.26版本代碼作為對比,發現lock_table_names函數下的Phase 3后的部分代 碼是在5.7.29版本后新增的。如果是git clone的MySQL代碼可以用git blame命令查詢文件變化的信息:

上述展示的信息中,最左側的列值為commit id為05824063和0405ebee,有興趣的同學可以詳細看下。

此功能解決的問題是 BUG#28438114: SET READ_ONLY=1 SOMETIMES DOESN'T BLOCK CONCURRENT DDL.;當然這個代碼的變更功能也在5.7 Release Notes中有所體現,如下所示( m/doc/relnotes/mysql/5.7/en/news-5-7-29.html ):

最后我們再查看下check_readonly函數,該函數是基于read_only和super_read_only狀態執行標準化檢查,是禁止(TRUE)還是允許(FALSE)操作。代碼如下(sql/auth/sql_authorization.cc:489):

此時第一反應就是去檢查my.cnf中是否包含read_only相關參數,檢查之后發現確實是使用了該參數, 如下:

此時注釋掉該參數,然后再次啟動mysqld,發現MyISAM表可以自動修復,且正常啟動;error log信息如下:

由于docker一些限制,我們在mysqld啟動會涉及兩次;所以解決該問題的方式為:第一次mysqld的啟動時先關閉read_only參數,第二次啟動時開啟read_only參數。之所以選擇默認開啟read_only參數, 是為了避免在mysqld啟動后,選主邏輯未完成時的保護措施;當然選主完成后,會自動對master執行 set global read_only=0 操作。

五、總結

六、附錄

調試的棧幀信息如下,有興趣的小伙伴可以研究下:

熟悉MySQL體系結構和innodb存儲引擎工作原理;以及MySQL備份恢復、復制、數據遷移等技術;專注于MySQL、MariaDB開源數據庫,喜好開源技術。

原文鏈接:

mysql啟動不了服務啟動不了該怎么辦

一、無法訪問系統資源

MySQL 不能訪問啟動需要的資源是造成而 MySQL 無法啟動的一個常見原因,如:文件,端口等。由于 linux 中用于啟動 mysqld 進程的 mysql 用戶通常是不能登陸的,可以使用類似下面的命令檢查文件的訪問權限。

sudo -u mysql touch /var/lib/mysql/b

找出問題后,修改對應文件或目錄的權限或屬主后通常可以解決問題。但有時 mysql 用戶有訪問文件和目錄的權限,但仍然會被拒絕訪問,例如下面這個例子:

mysql system sudo -u mysql touch /home/mysql/data/a

mysql create table t1 (

id int primary key,n varchar(10

) data directory

ERROR 1030 (HY000): Got error 168 from storage engine

測試說明 mysql 用戶有這個目錄的訪問權限,但創建文件還是失敗,這種情況讓很多人困惑,這個時候通常是 mysqld 進程的訪問被 linux 的 selinux 或 apparmor 給阻止了,大家可以看到創建的表不是在 mysql 的默認目錄下面,因此 selinux 或 apparmor 的 policy 里面沒有包含這個目錄的訪問權限,此時只要對應的修改 policy 就行了,當然把 selinux 或 apparmor 停了也行。

有時雖然對系統資源有訪問的權限,但系統資源已經被占用:

mysqld --no-defaults --console --user mysql

2020-11-03T03:36:07.519419Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 21171

2020-11-03T03:36:07.740347Z 1 [ERROR] [MY-012574] [InnoDB] Unable to lock ./ibdata1 error: 11

這個故障產生的原因是另外一個 mysqld 進程已經啟動并占用了對應的文件。

二、參數設置錯誤

參數設置錯誤造成 MySQL 無法啟動的原因也非常常見,此時先要檢查 MySQL 啟動時會調用的參數,下面的命令可以查詢 MySQL 啟動時調用參數文件的順序:

$ mysqld --verbose --help | grep "Default options " -A 1

Default options are read from the following files in the given order:

/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

知道了 MySQL 參數文件的調用順序,我們就可以檢查對應的參數文件,找出其中的錯誤,如果覺得參數文件的可讀性不強,可以使用下面的命令顯示 mysqld 程序將要調用的參數:

$ mysqld --print-defaults

/usr/sbin/mysqld would have been started with the following arguments:

......

注意這個命令顯示完參數后就退出,不會真正運行 mysqld。這個命令和 my_print_defaults mysqld 完全是等價的,只不過后者的顯示方式是一行一個參數。

然后開始對可疑的參數進行調試,我個人喜歡加的參數和順序如下:

1. 在 mysqld 后加上第一個參數 --no-defaults ,這個參數的作用是通知 mysqld 在啟動的時候不要讀任何參數文件;

2. 第二個參數是 --console,這個參數會把錯誤信息輸出到屏幕上,這個參數帶來的一個弊端是所有的信息都輸出到屏幕上,讓屏幕顯得比較亂,但對于我們調試卻是很方便的;

3. 第三個參數是 --log-error-verbosity=3,這個參數會顯示詳細的日志;

4. 然后再在后面加上有把握的參數,可以一次只加一個參數,然后啟動 mysqld,采用排除法逐步找出錯誤的參數。

mysql5.7.12報錯如下情況導致無法連接數據庫應該怎么辦?

一、mysqld 進程沒有正常運行遇到這種情況首先到服務器上看看 mysqld 進程是否活著,采用的命令:

二、客戶端不能和進程 mysqld 通信如果 MySQL 服務器上的 mysqld 進程運行正常,我們再看看客戶端能不能和 mysqld 進行通信,使用下面的命令進行網絡連通的測試:telnet localhost 3306

如果本地能通,再到客戶端的機器上把 localhost 換成 MySQL 服務器的 ip 地址進行測試。如果不能通,通常有兩種原因,一種原因是 OS 或網絡的問題,或者是防火墻;另一種原因是 mysqld 自身根本沒有偵聽客戶端的連接請求, mysqld 啟動后對于客戶端的偵聽是分三種情況。

第一種情況

是使用參數 --skip-networking 跳過偵聽客戶端的網絡連接,用下面的命令我們可以看到 MySQL 根本沒有偵聽 3306 端口。

第二種情況

使用參數 --bind-address 后面增加對客戶端訪問 IP 地址的限制,例如只偵聽本地的連接

三、賬戶密碼的問題最后一種情況是賬戶密碼的問題,應付這種情況我們有個有力的工具就是查看 MySQL 的 error log, error log 記載信息的詳細程度上由參數 --log-error-verbosity 進行控制的

mysql 服務無法啟動是什么原因?

mysql 服務無法啟動的原因有很多:可能端口被占用;可能my.cnf配置了錯誤的參數;也有可能沒有初始數據庫,還有可能是其他原因。大多數原因都可以通過先注銷掉原有的服務、重新裝載服務、之后再重新啟動的方法解決。也可以嘗試下以下方法:

1、將目錄中配置文件my.default.ini改名為my.ini移至bin目錄下。

2、啟動命令行,將目錄切換到mysql安裝目錄的bin目錄下。

3、接下來,在命令行執行命令:mysqld --initialize --user=mysql --console

4、注意,上一個步驟會獲得一個臨時密碼,需要記錄,之后會用到。

5、接下來在控制臺以命令行輸入:?mysqld --install,進行安裝服務操作。

6、之后,在任務管理器找到“服務”,啟動其中的MYSQL服務即可。

7、之后,輸入命令行mysql -uroot -p,利用之前的臨時密碼輸入即可登錄數據庫成功。

8、修改臨時密碼,設置密碼:mysqladmin -u USER -p password PASSWORD,注意USER和PASSWORD為自己定義的數值。

擴展資料

數據庫就相當于現實中的倉庫。每個數據庫都有一個或多個不同的 API 用于創建,訪問,管理,搜索和復制所保存的數據。我們也可以將數據存儲在文件中,但是在文件中讀寫數據速度相對較慢。

使用關系型數據庫管理系統(RDBMS)來存儲和管理大數據量。所謂的關系型數據庫,是建立在關系模型基礎上的數據庫,借助于集合代數等數學概念和方法來處理數據庫中的數據。MySQL 就是一種關系型數據庫。

如果服務無法啟動,首先查看MySQL的服務是否存在。如果安裝服務失敗,則可新建項MySQL57建立項目。然后找到新建的項,檢查下ImagePath的路徑是否正確。如果路徑不對,修改過來。重啟計算機,再次啟動服務,并可以成功運行MySQL服務。

參考資料:百度百科-MySQL

怎么解決mysql服務無法啟動的問題

你好,

1、在計算機管理中,找到本地用戶和組,然后選擇用戶,找到mysql的超級賬戶,然后設置密碼,

2、然后再去計算機管理,選擇服務,找到mysql服務,將密碼設置為和上面的密碼一樣,

3、然后就可以啟動mysql服務了。

名稱欄目:無法使用mysql怎么辦,mysql連接不了怎么辦
網頁URL:http://m.kartarina.com/article32/hegjsc.html

成都網站建設公司_創新互聯,為您提供網站建設自適應網站網站設計面包屑導航商城網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

微信小程序開發
主站蜘蛛池模板: 中文字幕久久精品无码| 亚洲国产91精品无码专区| 一本之道高清无码视频| 亚洲精品无码久久久久秋霞| 免费无码又爽又刺激高潮 | 亚洲人成国产精品无码| 国产成人精品无码一区二区 | 亚洲AV永久无码精品网站在线观看| 亚洲一级特黄大片无码毛片| 人妻丰满熟妇av无码区不卡| 久久精品岛国av一区二区无码| 中文字幕有码无码AV| 一区二区无码免费视频网站| 亚洲AV无码专区国产乱码4SE| 精品无码成人久久久久久| 一本久道中文无码字幕av| 人妻丰满av无码中文字幕| 东京热人妻无码一区二区av| 精品国产AV无码一区二区三区| 亚洲AV无码久久久久网站蜜桃 | 亚洲Av综合色区无码专区桃色| 人妻丰满熟妇AV无码区| 亚洲国产精品无码久久98| 亚洲AV无码久久寂寞少妇| 中国少妇无码专区| 国产Av激情久久无码天堂| av无码aV天天aV天天爽| 加勒比无码一区二区三区| 国产精品无码久久四虎| 无码熟熟妇丰满人妻啪啪软件| 亚洲熟妇无码一区二区三区| 精品无码人妻一区二区三区| 蜜桃无码一区二区三区| 亚洲AV无码无限在线观看不卡| 99精品人妻无码专区在线视频区 | 国产AV无码专区亚洲AV蜜芽| 亚洲精品自偷自拍无码| 亚洲AV成人无码久久WWW| 国产精品亚洲专区无码唯爱网| 无码人妻aⅴ一区二区三区有奶水 亚洲AV无码专区在线厂 | 无码少妇丰满熟妇一区二区|