程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 如何用MySQL 命令來實現賬戶管理

如何用MySQL 命令來實現賬戶管理

編輯:MySQL綜合教程

今天我們要學習的是如何用MySQL 命令的方式來對賬號進行管理,我們大家都知道在實際應用中MySQL 命令可以完成多種任務,以下的文章主要是對用MySQL 命令的方式來對賬號進行管理的具體內容介紹。

手冊上說 “GRANT語句允許系統管理員創建MySQL用戶賬戶,授予權限。”。但我無論怎麼樣也沒有辦法用這個命令創建用戶賬號。

我想增加一個新的測試用戶,命令如下:

  1. MySQL> GRANT ALL ON qyoa.* TO chy@localhost INDENTIFIED BY "123456";   
  2. ERROR 1046 (3D000): No database selected 

後來上網找資料才發現這樣寫是錯的,改成:

  1. MySQL> GRANT ALL ON qyoa.* TO chy@localhost INDENTIFIED BY "123456";   
  2. ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to   
  3. your MySQL server version for the right syntax to use near 'INDEN TIFIED BY "123456"' at line 1 

網上有人也遇到這樣的錯誤,有人如些回答:MySQL.user MySQL命令庫應該選上.因為你執行的操作是修改權限表... 這個明白了你就可以直接操作這個表了.呵呵
http://www.phpchina.com/html/54/t-51354.html)

可能是本人愚鈍,怎麼也看不明白這話什麼意思。

只好一遍又一遍的試

  1. MySQL> use MySQL;   
  2. MySQL> GRANT ALL ON qyoa.* TO chy@localhost INDENTIFIED BY "123456";  

錯誤提示同上面一樣。


後來折騰了一兩個小時,實現找不到問題出在那裡。只好換過一種實現方式,

  1. MySQL> CREATE USER chy@localhost IDENTIFIED BY '123456';  
  2. MySQL> grant all on qyoa.* to chy@localhost; 

終於建好用戶和分配好權限。難道只可以創建好賬號才可以分配權限?

後來的我猜測得到證實,真的是要創建好賬號才可以分配權限。杯具啊!就這樣白白浪費了我好幾個小時。

  1. MySQL> GRANT ALL ON qyoa.* TO chy@localhost INDENTIFIED BY "123456";  

運行成功!

如果沒有創建用戶帳號,直接執行

  1. MySQL> grant all on qyoa.* to chy@localhost; 

會用如下錯誤信息

  1. ERROR 1133(42000) can 't find any matching row in the user table 

或許是我本機的設置有問題吧,今天再執行
 

  1. MySQL>GRANT ALL ON qyoa.* TO chy1@localhost identified by "123456"; 

又可以正常執行了,搞不懂什麼原因。難不成真的是我人品問題?

但將語句改成如下執行又出現問題:

  1. MySQL> grant all on qyoa.* to chy@localhost;  
  2. ERROR 1133(42000) can 't find any matching row in the user table  

翻查MySQL命令手冊得到如下資料:

”SQL服務器模式
模式定義MySQL應支持哪些SQL語法,以及應執行哪種數據驗證檢查。你可以用SELECT @@sql_mode語句查詢當前的模式。

  1. · NO_AUTO_CREATE_USER 

防止GRANT自動創建新用戶,除非還指定了密碼。

你還可以在啟動後用SET [SESSION|GLOBAL] sql_mode='modes'語句設置sql_mode變量來更改SQL模式。

設置 GLOBAL變量時需要擁有SUPER權限,並且會影響從那時起連接的所有客戶端的操作。設置SESSION變量只影響當前的客戶端。

任何客戶端可以隨時更改自己的會話 sql_mode值。“

原來是設定了 sql 服務器模式。 sql_mode值 是保存在 my.ini 中,可以直接打開該文件修改後再重啟服務,也可以用


SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' 進行更改。

測試:

  1. MySQL>SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';  

後再執行

  1. MySQL> grant all on qyoa.* to chy@localhost; 

創建空密碼新賬號成功!以上的相關內容就是對MySQL 賬戶管理 今天學習怎樣用 MySQL 命令的方式來管理賬號的介紹,望你能有所收獲。


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved