開始--》運行--》cmd
目前創(chuàng)新互聯(lián)已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站運營、企業(yè)網(wǎng)站設(shè)計、湖口網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
進入mysql安裝目錄的bin文件夾(客戶都沒設(shè)置環(huán)境變量找不到mysql命令只能到那個目錄)
比如:D:\Program Files\MySQL\MySQL Server 5.0\bin
1.暫停mysql服務(wù);
2.忽略授權(quán)問題;
3.另一個命令行進去myql;
4.重置root密碼并刷新授權(quán)表;
5.任務(wù)管理器殺掉mysql進程;
6.重啟mysql服務(wù);
net stop mysql
mysqld --skip-grant-tables
開另外一個命令行窗口,一樣進入那個目錄
mysql -u root -p
update mysql.user set password=PASSWORD("新密碼") where User="root";
flush privileges;
任務(wù)管理器殺掉mysql進程
net start mysql
#################################################################
vi /etc/my.cnf 在[mysqld]添加
skip-grant-tables
/etc/init.d/mysql restart
mysql
update mysql.user set password=PASSWORD("新密碼") where User="root";
flush privileges;
/etc/init.d/mysql restart
重置mysql root密碼方法
一、Windows環(huán)境的找回方法:
1、打開cmd命令窗口,先輸入命令:
net stop mysql 回車 #關(guān)閉mysql服務(wù)。
進入到D:\SOFT_PHP_PACKAGE\mysql\bin\ 目錄下,執(zhí)行mysqld --skip-grant-tables 啟動MySQL Server (如果報錯,執(zhí)行mysqld-nt --skip-grant-tables);
2、另外打開一個cmd窗口, 依次輸入以下命令,將root賬戶密碼重置為123456。(命令輸入部分用紅色標(biāo)注)
mysql
mysqluse mysql;
mysql update user set password=password("123456") where user="root";
mysqlflush privileges;
exit
3、關(guān)閉兩個命令窗口,此時還無法啟動mysql因為mysql進程還在運行中,打開任務(wù)管理器,找到mysqld開頭的進程,點結(jié)束進程;
4、輸入命令:net start mysql 啟動mysql,或者進服務(wù)啟動mysql,就可以用root賬戶和新密碼登陸管理了。
二、linux環(huán)境的找回方法:
1、ssh登陸到linux服務(wù)器,向mysqld server 發(fā)送kill命令關(guān)掉mysqld server(不是 kill -9),存放進程ID的文件通常在mysql的數(shù)據(jù)庫所在的目錄中。(命令輸入部分用紅色標(biāo)注)
#killall -TERM mysqld
2、 使用`--skip-grant-tables' 參數(shù)來啟動 mysqld(/www/wdlinux/mysql/bin/為wdcp系統(tǒng)的mysql路徑,非此系統(tǒng)的,請變更mysql的路徑)。
#cd /www/wdlinux/mysql/bin/
#mysqld_safe --skip-grant-tables
3、 原有的ssh客戶端不要關(guān)閉(若該客戶端超時,可能導(dǎo)致重置密碼失敗,所以重置密碼過程建議在幾分鐘內(nèi)完成),新開一個ssh客戶端登陸,登陸后輸入mysql命令登陸到mysql:
mysql
然后輸入以下命令重置密碼:
use mysql
update user set password=password("123456") where user="root";
flush privileges;
4、輸入命令:
#killall -TERM mysqld
#service mysqld start
5、用新密碼登陸試試
1、對于命令控來說,在cmd命令下行下操作很方便,但有時需要直接在命令行床空執(zhí)行mysql這樣的命令,會出現(xiàn)”mysql不是內(nèi)部或外部命令“這樣的錯誤提示,原因是mysql其實是一個exe文件,存放于myql安裝路徑/bin下,因此需要將mysql的安裝路徑配置到path環(huán)境變量中,如此以后就不用每次都cd到mysql路徑下了;
2、設(shè)置完成后我們再試試看-cmd--mysql
已經(jīng)連接上mysql了,接下來我們可以使用dml、sql語言來創(chuàng)建我們自己的數(shù)據(jù)庫了;
3、首先,要創(chuàng)建一個數(shù)據(jù)庫名字為test_user;
創(chuàng)建成功!
4、創(chuàng)建一個張數(shù)據(jù)表,使用腳本即可。
注意,創(chuàng)建table之前一定要use databasename;
你能用這個命令得到mysqld服務(wù)器缺省緩沖區(qū)大?。?/p>
shellmysqld--help
這個命令生成一張所有mysqld選項和可配置變量的表。輸出包括缺省值并且看上去象這樣一些東西:
如果有一個mysqld服務(wù)器正在運行,通過執(zhí)行這個命令,你可以看到它實際上使用的變量的值:
shellmysqladminvariables
每個選項在下面描述。對于緩沖區(qū)大小、長度和棧大小的值以字節(jié)給出,你能用于個后綴“K”或“M”指出以K字節(jié)或兆字節(jié)顯示值。例如,16M指出16兆字節(jié)。后綴字母的大小寫沒有關(guān)系;16M和16m是相同的。
你也可以用命令SHOWSTATUS自一個運行的服務(wù)器看見一些統(tǒng)計。見7.21SHOW語法(得到表、列的信息)。
back_log
要求MySQL能有的連接數(shù)量。當(dāng)主要MySQL線程在一個很短時間內(nèi)得到非常多的連接請求,這就起作用,然后主線程花些時間(盡管很短)檢查連接并且啟動一個新線程。back_log值指出在MySQL暫時停止回答新請求之前的短時間內(nèi)多少個請求可以被存在堆棧中。只有如果期望在一個短時間內(nèi)有很多連接,你需要增加它,換句話說,這值對到來的TCP/IP連接的偵聽隊列的大小。你的操作系統(tǒng)在這個隊列大小上有它自己的限制。Unixlisten(2)系統(tǒng)調(diào)用的手冊頁應(yīng)該有更多的細節(jié)。檢查你的OS文檔找出這個變量的最大值。試圖設(shè)定back_log高于你的操作系統(tǒng)的`限制將是無效的。
connect_timeout
mysqld服務(wù)器在用Badhandshake(糟糕的握手)應(yīng)答前正在等待一個連接報文的秒數(shù)。
delayed__timeout
一個InsertDELAYED線程應(yīng)該在終止之前等待Insert語句的時間。
delayed__limit
在插入delayed__limit行后,InsertDELAYED處理器將檢查是否有任何Select語句未執(zhí)行。如果這樣,在繼續(xù)前執(zhí)行允許這些語句。
delayed_queue_size
應(yīng)該為處理InsertDELAYED分配多大一個隊列(以行數(shù))。如果排隊滿了,任何進行InsertDELAYED的客戶將等待直到隊列又有空間了。
flush_time
如果這被設(shè)置為非零值,那么每flush_time秒所有表將被關(guān)閉(以釋放資源和sync到磁盤)。
interactive_timeout
服務(wù)器在關(guān)上它前在一個交互連接上等待行動的秒數(shù)。一個交互的客戶被定義為對mysql_real_connect()使用CLIENT_INTERACTIVE選項的客戶。也可見wait_timeout。
join_buffer_size
用于全部聯(lián)結(jié)(join)的緩沖區(qū)大小(不是用索引的聯(lián)結(jié))。緩沖區(qū)對2個表間的每個全部聯(lián)結(jié)分配一次緩沖區(qū),當(dāng)增加索引不可能時,增加該值可得到一個更快的全部聯(lián)結(jié)。(通常得到快速聯(lián)結(jié)的最佳方法是增加索引。)
key_buffer_size
索引塊是緩沖的并且被所有的線程共享。key_buffer_size是用于索引塊的緩沖區(qū)大小,增加它可得到更好處理的索引(對所有讀和多重寫),到你能負擔(dān)得起那樣多。如果你使它太大,系統(tǒng)將開始換頁并且真的變慢了。記住既然MySQL不緩存讀取的數(shù)據(jù),你將必須為OS文件系統(tǒng)緩存留下一些空間。為了在寫入多個行時得到更多的速度,使用LOCKTABLES。見7.24LOCKTABLES/UNLOCKTABLES語法。
long_query_time
如果一個查詢所用時間超過它(以秒計),Slow_queries記數(shù)器將被增加。
max_allowed_packet
一個包的最大尺寸。消息緩沖區(qū)被初始化為net_buffer_length字節(jié),但是可在需要時增加到max_allowed_packet個字節(jié)。缺省地,該值太小必能捕捉大的(可能錯誤)包。如果你正在使用大的BLOB列,你必須增加該值。它應(yīng)該象你想要使用的最大BLOB的那么大。
max_connections
允許的同時客戶的數(shù)量。增加該值增加mysqld要求的文件描述符的數(shù)量。見下面對文件描述符限制的注釋。見18.2.4Toomanyconnections錯誤。
max_connect_errors
如果有多于該數(shù)量的從一臺主機中斷的連接,這臺主機阻止進一步的連接。你可用FLUSHHOSTS命令疏通一臺主機。
max_delayed_threads
不要啟動多于的這個數(shù)字的線程來處理InsertDELAYED語句。如果你試圖在所有InsertDELAYED線程在用后向一張新表插入數(shù)據(jù),行將入,就像DELAYED屬性沒被指定那樣。
max_join_size
可能將要讀入多于max_join_size個記錄的聯(lián)結(jié)將返回一個錯誤。如果你的用戶想要執(zhí)行沒有一個Where子句、花很長時間并且返回百萬行的聯(lián)結(jié),設(shè)置它。
max_sort_length
在排序BLOB或TEXT值時使用的字節(jié)數(shù)(每個值僅頭max_sort_length個字節(jié)被使用;其余的被忽略)。
max_tmp_tables
(該選擇目前還不做任何事情)。一個客戶能同時保持打開的臨時表的最大數(shù)量。
net_buffer_length
通信緩沖區(qū)在查詢之間被重置到該大小。通常這不應(yīng)該被改變,但是如果你有很少的內(nèi)存,你能將它設(shè)置為查詢期望的大小。(即,客戶發(fā)出的SQL語句期望的長度。如果語句超過這個長度,緩沖區(qū)自動地被擴大,直到max_allowed_packet個字節(jié)。)
record_buffer
每個進行一個順序掃描的線程為其掃描的每張表分配這個大小的一個緩沖區(qū)。如果你做很多順序掃描,你可能想要增加該值。
sort_buffer
每個需要進行排序的線程分配該大小的一個緩沖區(qū)。增加這值加速ORDERBY或GROUPBY操作。見18.5MySQL在哪兒存儲臨時文件。
table_cache
為所有線程打開表的數(shù)量。增加該值能增加mysqld要求的文件描述符的數(shù)量。MySQL對每個唯一打開的表需要2個文件描述符,見下面對文件描述符限制的注釋。對于表緩存如何工作的信息,見10.2.4MySQL怎樣打開和關(guān)閉表。
tmp_table_size
如果一張臨時表超出該大小,MySQL產(chǎn)生一個Thetabletbl_nameisfull形式的錯誤,如果你做很多高級GROUPBY查詢,增加tmp_table_size值。
thread_stack
每個線程的棧大小。由crash-me測試檢測到的許多限制依賴于該值。缺省隊一般的操作是足夠大了。見10.8使用你自己的基準(zhǔn)。
wait_timeout
服務(wù)器在關(guān)閉它之前在一個連接上等待行動的秒數(shù)。也可見interactive_timeout。
MySQL使用是很具伸縮性的算法,因此你通常能用很少的內(nèi)存運行或給MySQL更多的被存以得到更好的性能。
如果你有很多內(nèi)存和很多表并且有一個中等數(shù)量的客戶,想要最大的性能,你應(yīng)該一些象這樣的東西:
shellsafe_mysqld-Okey_buffer=16M-Otable_cache=128
?????-Osort_buffer=4M-Orecord_buffer=1M
如果你有較少的內(nèi)存和大量的連接,使用這樣一些東西:
shellsafe_mysqld-Okey_buffer=512k-Osort_buffer=100k
?????-Orecord_buffer=100k
或甚至:
shellsafe_mysqld-Okey_buffer=512k-Osort_buffer=16k
?????-Otable_cache=32-Orecord_buffer=8k-Onet_buffer=1K
如果有很多連接,“交換問題”可能發(fā)生,除非mysqld已經(jīng)被配置每個連接使用很少的內(nèi)存。當(dāng)然如果你對所有連接有足夠的內(nèi)存,mysqld執(zhí)行得更好。
注意,如果你改變mysqld的一個選項,它實際上只對服務(wù)器的那個例子保持。
為了明白一個參數(shù)變化的效果,這樣做:
shellmysqld-Okey_buffer=32m--help
保證--help選項是最后一個;否則,命令行上在它之后列出的任何選項的效果將不在反映在輸出中。
重置mysql主從同步(MySQL Reset Master-Slave Replication)
在mysql主從同步的過程中,可能會因為各種原因出現(xiàn)主庫與從庫不同步的情況,網(wǎng)上雖然有一些解決辦法,但是有時很難徹底解決,重置主從服務(wù)器也許不是最快的辦法,但卻是最安全有效的。
下面將自己重置主從同步的步驟總結(jié)一下,以備不時之需。
master與slave均使用:centos6.0+mysql 5.1.61 ,假設(shè)有db1,db2兩個數(shù)據(jù)庫需要熱備。
文中shell與mysql均使用root賬號,在真實環(huán)境中,請根據(jù)情況更換。
1.停止slave服務(wù)器的主從同步
為了防止主從數(shù)據(jù)不同步,需要先停止slave上的同步服務(wù)。
STOP SLAVE;
2.對master服務(wù)器的數(shù)據(jù)庫加鎖
為了避免在備份的時候?qū)?shù)據(jù)庫進行更新操作,必須對數(shù)據(jù)庫加鎖。
FLUSH TABLES WITH READ LOCK;
如果是web服務(wù)器也可以關(guān)閉apache或nginx服務(wù),效果也是一樣的。
3.備份master上的數(shù)據(jù)
mysqldump -u root -p -databases db1 db2 bak.sql
4.重置master服務(wù)
RESET MASTER;
這個是重置master的核心語法,看一下官方解釋。
RESET MASTER removes all binary log files that are listed in the index file, leaving only a single, empty binary log file with a numeric suffix of .000001, whereas the numbering is not reset by PURGE BINARY LOGS.
RESET MASTER is not intended to be used while any replication slaves are running. The behavior. of RESET MASTER when used while slaves are running is undefined (and thus unsupported), whereas PURGE BINARY LOGS may be safely used while replication slaves are running.
大概的意思是RESET MASTER將刪除所有的二進制日志,創(chuàng)建一個.000001的空日志。RESET MASTER并不會影響SLAVE服務(wù)器上的工作狀態(tài),所以盲目的執(zhí)行這個命令會導(dǎo)致slave找不到master的binlog,造成同步失敗。
但是我們就是要重置同步,所以必須執(zhí)行它。
5.對master服務(wù)器的數(shù)據(jù)庫解鎖
UNLOCK TABLES;
如果你停止了apache或nginx,請開啟它們
6.將master上的備份文件拷貝到slave服務(wù)器上
大可不必用WinScp先下載到本地再上傳到slave上,可以直接使用scp命令在服務(wù)器間拷貝,速度更快。
scp -r root@XXX.XXX.XXX.XXX:/root/bak.sql ./
7.刪除slave服務(wù)器上的舊數(shù)據(jù)
刪除前,請先確認該備份的是否都備份了。
DROP DATABASE db1;
DROP DATABASE db2;
8.導(dǎo)入數(shù)據(jù)
SOURCE /root/bak.sql;
9.重置slave服務(wù)
RESET SLAVE;
還是看一下官方解釋
RESET SLAVE makes the slave forget its replication position in the master's binary log. This statement is meant to be used for a clean start: It deletes the master.info and relay-log.info files, all the relay log files, and starts a new relay log file. To use RESET SLAVE, the slave replication threads must be stopped (use STOP SLAVE if necessary).
大概意思是,RESET SLAVE將清除slave上的同步位置,刪除所有舊的同步日志,使用新的日志重新開始,這正是我們想要的。需要注意的是,必須先停止slave服務(wù)(STOP SLAVE),我們已經(jīng)在第一步停止了它。
10.開啟slave服務(wù)
START SLAVE;
大功告成,SHOW SLAVE STATUS\G 檢查同步狀態(tài),一切正常。
第一步:配置mysql環(huán)境
就是在環(huán)境變量PATH里把mysql的bin目錄的地址寫進去,這樣直接以管理員運行cmd,輸入mysql或者mysqld可以直接運行
【PS】:這里不配置也是可以的,可以cd到mysql的bin目錄在運行mysql和mysqld,只是配置了方便一些而已。記得環(huán)境變量;號隔開
第二步:運行mysqld
運行mysqld,直接在cmd中輸入mysqld –skip-grant-tables,如果未配置環(huán)境的話是.\mysqld –skip-grant-tables
【PS】:注意,在輸入此命令之前,你需要先關(guān)閉的mysql服務(wù),無論是mysql還是mysqld服務(wù)都需要關(guān)閉,可以在任務(wù)管理器中關(guān)閉
第三步:運行mysql
再輸入mysqld –skip-grant-tables后命令行會卡住,這是在啟動一個cmd,鍵入mysql,這是會成功跳過密碼的輸入,直接進入mysql中去
第四步:就是修改mysql@root的密碼
在mysql數(shù)據(jù)庫的user表中存著用戶的信息,其中就包含密碼。
在mysql數(shù)據(jù)庫中鍵入:
update user set password
=password('你的密碼') where user='root' and host='localhost';123
密碼就可以修改了
【PS】:mysql的高版本中把user表中的password字段換成了authentication_string,所以如果出現(xiàn)提示:ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’
說明你的mysql是高版本的,把password改為authentication_string就好了
命令為
update user set authentication_string
=password('你的密碼') where user='root'and host='localhost';
1、在SHELL環(huán)境下,使用mysqladmin命令設(shè)置:
mysqladmin –u root –p password “新密碼”
回車后要求輸入舊密碼。
2、 在mysql環(huán)境中使用update命令,直接更新mysql庫user表的數(shù)據(jù)
Update mysql.user set password=password(‘新密碼’) where user=’root’;
flush privileges;
3、在mysql環(huán)境中,使用grant命令,修改root用戶的授權(quán)權(quán)限。
grant all on *.* to root@’localhost’ identified by '新密碼';