乙個重要的應用就是如何在遺忘root使用者密碼的時候修改密碼,使用的方法是啟動mysql伺服器時忽略載入授權表。
由mysql使用使用者名稱和口令的方法與unix或windows使用的方式有很多不同之處:
·mysql 使用於認證目的的使用者名稱,與unix使用者名稱(登入名字)或windows使用者名稱無關。預設地,大多數mysql客戶嘗試使用當前 unix使用者名稱作為mysql使用者名稱登入,但是這僅僅為了方便。客戶程式允許用-u或--user選項指定乙個不同的名字,這意味著無論如何你不能使得乙個資料庫更安全,除非所有的mysql使用者名稱都有口令。任何人可以試圖用任何名字連線伺服器,而且如果他們指定了沒有口令的任何名字,他們將成功。
·mysql使用者名稱最長可以是16各字元;典型地,unix使用者名稱限制為8個字元。
·mysql口令與unix口令沒關係。在你使用登入到一台unix機器口令和你使用在那台機器上訪問乙個資料庫的口令之間沒有必要有關聯。
·mysql加密口令使用了乙個unix登入期間所用的不同演算法。
本節將介紹如何為mysql資料庫系統的使用者修改密碼。
使用myadmin實用程式
使用mysqladmin實用程式修改密碼的命令列是:
shell>mysqladmin -u user -p password "newpassword"
執行這個命令,在提示輸入密碼時,資料就密碼,則使用者user的密碼就被改為newpassword
。如果,原來的使用者沒有密碼,則不比指定-p選項。例如,初始化授權表之後,root使用者的密碼就是空的,你可以這樣為root使用者設立密碼:
shell>mysqladmin -u root password "newpassword"
使用語句set password
使用mysqladmin為使用者修改密碼有乙個明顯的缺點,就是必須知道使用者原來的密碼,如果是為了給遺忘了密碼的使用者重設密碼就無能為力了。乙個專門用於修改密碼的sql語句為set password:
·set password = password('some password')
設定當前使用者的口令。任何非匿名的使用者能改變他自己的口令!
連線到伺服器後,你可以這樣改變自己的密碼:
**如下:
mysql> set password = password('another pass');
·set password for user = password('some password')
mysql> set password for bob@"%.loc.gov" = password("newpass");
直接修改授權表
另一種修改,密碼的方法是直接修改授權表user。只有具備訪問mysql資料庫的使用者可以這樣做。
mysql> update mysql.user set password=password("newpass") where user="bob' and host="%.loc.gov";
mysql>flush privileges;
重新設定乙個遺忘的root口令
如果你遺忘了root使用者的口令,那麼將會是一件非常麻煩的事。除非你有其它有特權的使用者,否則很多操作都無法完成,例如,關閉資料庫等等。
例如,如果你忘記了你的mysql的root口令的話,你可以通過下面的過程恢復。
1、關閉mysql伺服器
向mysqld server 傳送kill命令關掉mysqld server(不是 kill -9),存放程序id的檔案通常在mysql的資料庫所在的目錄中。
kill `cat /mysql-data-directory/hostname.pid`
你必須是unix的root使用者或者是你所執行的server上的同等使用者,才能執行這個操作。
如果在windows平台上,也可以停止程序。如果是nt還可以用net stop mysql命令關閉資料庫。
2、使用'--skip-grant-tables' 引數來啟動 mysqld。
unix平台:
$su mysql
$safe_mysqld --skip-grant-tables &
windows平台:
c:mysqlbin>mysqld --skip-grant-tables
以上語句,假定都位於正確的目錄。
3、連線到伺服器,修改口令
使用'mysql -h hostname mysql'命令登入到mysqld server ,用grant命令改變口令:
mysql>grant all on *.* to root@localhost indentified by 'new password'
-> with grant option;
mysql>grant all on *.* to root@% indentified by 'new password'
-> with grant option;
(如果存在乙個能從任意位址登入的root使用者,初始化授權表後,生成該使用者,為了安全,你可能已經刪除該使用者)。
其實也可以直接修改授權表:
mysql> use mysql;
mysql> update user set password =password('yourpass') where user='root';
你可能使用工具mysqladmin修改密碼:
shell> mysqladmin -h hostname -u root password 'new password
但是它修改的密碼語伺服器匹配的使用者有關。如果,你從伺服器主機連線,那麼伺服器匹配的是root@localhost,修改該使用者密碼,否則一般修改root@%密碼,除非你有其它root使用者存在。
4. 載入許可權表:
shell> mysqladmin -h hostname flush-privileges
或者使用 sql 命令`flush privileges'。
當然,在這裡,你也可以重啟mysqld。
MYSQL使用者root密碼為弱口令的
1 連線到對方mysql 伺服器 mysql u root h 192.168.0.1 mysql.exe 這個程式在你安裝了mysql的的bin目錄中 2 讓我們來看看伺服器中有些什麼資料庫 mysql show databases mysql預設安裝時會有mysql test這兩個資料庫,如果你...
mysql設 mysql常見設定
1.如果你需要設定mysql的埠,預設字符集的話,除了在圖形介面下設定之外,還可以去配置檔案那裡設定 例如 mysql在c program files mysql mysql server 5.0目錄下,則尋找my.ini檔案,裡面可以設定 埠號 port 和預設字符集 default charac...
MySQL使用者遠端登入以及root密碼設定
一.mysql預設不可以設定root在遠端登入,只可以在本地localhost進行登入 可以通過新建乙個user,然後賦予其所有許可權實現登入 mysql u root p create user jhz identified by jhz 密碼 create user jhz localhost ...