| 會員 ![]() | 【求助】請教一個 mysql 的 user 權限問題 我的 server 環境是: xp pro + appserv v2.5.1(mysql4,php5..) 由於剛安裝完 appserv ,所以想改變 root 的密碼. 但在 xp 的文字命令模式下執行: mysql -u user1 -p 後卻發現以 user1(非 root 帳戶)登入資料庫後,我竟然可"查詢"與"修改" database: mysql 的資料表,例如: use mysql; update user set password=password('12345') where user='root'; ps. user1 只是一般帳戶 ---------------------------------------------------------------------------------------------- Q1: 請問這正常嗎...如此豈不很危險!? Q2: 另外想請教 server side 的 *.php 在什麼情況下會被盜取? 是否完全無法被 client 端的訪客盜取呢? |
| 回覆 |
| 校長兼撞鐘 ![]() | Appserv 預設權限本就是如此 你可進入 phpMyAdmin 點選 "權限" 去修改 或參考這篇文章去修改: http://sfs.tceb.edu.tw/file/AppServ.htm ps:這篇文張貼到防毒/防駭版有點不適當 , 應該扯不上關係吧 |
| 回覆 |
| 會員 ![]() | 哪尼! 您是說 APPSERV 預設可讓其他帳戶去查詢與更改 ROOT 的密碼...這是真的嗎?? 我利用 PHPMYADMIN 介面的權限去看 USER1 發現其除了一些基本的權限如 SELECT , UPDATE , INSERT...等並無系統管理的權限啊...Why??? 我上文舉的 USER1 帳戶是我自己後來新增的,主要用來做為BLOG登入與連線資料庫專用,當初設定如下: grant all on myblog.* to user1@localhost identified by '12345'; 實在搞不懂為何其有那麼大的權限...還是我指令下的不周全呢? =========================================== 我剛剛試了一下發現即便下了以下權限指令: grant select on myblog.* to user1@localhost identified by '12345'; user1 仍然可以更改 root 的密碼!.....Why??? 我不是已經限定 user1 的權限只有在 myblog.* 了嗎...為何其可去動到位於mysql 資料庫中的 user 資料表裡的 root 的資料呢??? |
| 回覆 |
| 會員 ![]() | 我已將 User , Password 值為空字串的都刪除了! 以我的 user 表來看,僅剩下兩筆資料亦即: root 與 user1 ========================================= 我剛剛試了一下發現即便下了以下權限指令: grant select on myblog.* to user1@localhost identified by '12345'; 且資料庫有重新啟動,只是 user1 仍然可以更改 root 的密碼! 我明明已經限定 user1 的權限只有在 myblog.* ,為何其仍可去動到位於mysql 資料庫中的 user 資料表裡的 root 的密碼呢 ??? 照理說, user1 應該連: use mysql; select * from user; 都作不了的...,不是嗎? 以下列出最終 user 表的查詢結果: file 首先,我上文的權限設定指令只給了user1 "select" 的權限,但此查詢結果的 user1 根本就天差地遠地多了許多權限. 其次是 user1 根本就無"系統管理"的相關權限,而我上文也說過其權限僅限制在 mtblog.* 的所有資料表...真不知為何以 user1 登入 MySQL 後竟還可以改掉 root 的密碼??? |
| 回覆 |
| 會員 ![]() | 以下是我找到的答案,順便post上來給有同樣問題的人參考. =================================== mysql.user table 裡的 priv 屬於 global level 權限,意謂可以針 對server上的任何一個資料庫!!! 可以用 REVOKE ALL PRIVILEGES ON *.* FROM user 來移除所有 global level 權限 grant select on myblog.* to user1@localhost identified by '12345'; 只會變更 db level 權限, 並記錄在mysql.db! 另外,如原本即無此使用者 user table 會預設 priv 欄位值皆為'N'喔! -- 權限的 level 總共有: global, db, table, column, Routine level |
| 回覆 |
| 會員 ![]() | 大致上有較了解了,再請教一些事以確定我的觀念正確與否.....感激不盡! Q1: 在 user 表中的欄位 *_priv (如 Select_priv) 是否都算是 global level 權限? Q2: 若是, 則執行 grant all on 論壇.* to 帳戶@localhost identified by '密碼'; 是否只會變更db level 權限, 並記錄在 mysql.db,亦即如此做並不會有 global level 權限的安全性問題? 也就是執行 grant all on 論壇.* to 帳戶@localhost identified by '密碼'; 與 user 表中的欄位 *_priv 之值無關? Q3: 若是, 請問執行 grant all on 論壇.* to 帳戶@localhost identified by '密碼'; 後,在 user 表中的所有 *_priv 欄位的值是 "Y" 或 "N" 呢? Q4: 請教如設定與更改某帳戶的 global level 權限 ? Q5: 該如何完整刪除某個已存在帳戶呢? |
| 回覆 |
| 會員 ![]() | A1:yes A2:yes,yes A3:user中的*_priv預設都會為N A4:以root權限進入作設定,如:grant select on *.* to 帳號@localhost; A5: 以root權限進入: DROP USER user; 或者 delete from user where user.user='帳號'; delete from db where db.user='帳號'; |
| 回覆 |
| 會員 ![]() | 嗯,再請教: Q1: 如果把MYSQL資料庫中的資料表:user,db,user_info,tables_priv,procs_priv,columns_priv中的User欄位有欲刪除帳號的資料逐一刪除如下: delete from user where user='帳號'; ... ... delete from columns_priv where user='帳號'; 如此與DROP USER '帳號';的效果有何差別? Q2: 官網有提到:自MySQL 4.1.2後可以如下指令完整刪除包含--- all global, database-, table-, and column-level privileges 的帳戶: REVOKE ALL PRIVILEGES, GRANT OPTION FROM usera; ....為怕我會錯意,想先確定再來執行,謝謝! |
| 回覆 |
| 會員 ![]() | 自問自答: a1: 一樣,後者比較方便! 至於 DROP USER 有幾點要注意: "5.0.1版本以前"只能 drop 沒有任何權限的 user ,所以要先用以下指令移除權限: REVOKE ALL PRIVILEGES, GRANT OPTION FROM usera@localhost; 再執行: DROP USER usera@localhost; a2: REVOKE ALL PRIVILEGES, GRANT OPTION FROM user1@localhost; 以上的指令做完後,只需再做完如下指令就完成刪除user1的所有工作! DELETE FROM USER WHERE USER='user1'; |
| 回覆 |
| 會員 ![]() | 關於單引號的使用時機(以下是我在網上查到的資訊,但無法百分百確定):->單引號問題只有在例如:'USER-1'@'%'才需強制加上. 帳戶若無"-",主機若無"-"或"%"則可加可不加. 關於刪除帳戶 usera 我做了以下整理:------------------------------------------------------------------ 首先釐清: 下行指令只會移除 usera 的所有 global權限 (亦即位於 mysql.user 表中的所有權限欄位設定) REVOKE ALL PRIVILEGES ON *.* FROM 'usera'@'localhost' ------------------------------------------------------------------ 若要完整刪除帳戶 usera (亦即包含'該帳戶資料'及'所有表相關的權限設定'),自從 MySQL v4.1.2 後,有以下 3 個方法可用: 1.先移除權限再刪除 A.移除權限(all global, database-, table-, and column-level privileges) .如果user資料表的Host為% REVOKE ALL PRIVILEGES, GRANT OPTION FROM usera; .否則(方法) revoke all privileges ,grant option from usera@localhost(或其他明確主機名); B.刪除(方法) b1. DELETE FROM USER WHERE USER='usera'; b2. drop user usera@localhost; (5.0.1版本以前只能 drop 沒有任何權限的 user ,所以須先執行上述 [A.移除權限] 之步驟) (若版本 >= 5.0.1 ,則建議採用下述的方法3較快) 2.直接刪除 (較麻煩,需逐一刪除 user,db,user_info,tables_priv,procs_priv,columns_priv 表中的資料與權限設定) delete from user where user='usera'; ... ... delete from columns_priv where user='usera'; 3."一步"即搞定刪除一個帳戶之所有工作(需要在5.0.1及以上版本) drop user usera@localhost; |
| 回覆 |
| |
類似的主題 | ||||
| 主題 | 主題作者 | 討論版 | 回覆 | 最後發表 |
| 關於win2003 FTP 權限問題 | tenz9596 | -- Windows 討 論 版 | 4 | 2009-04-13 03:52 PM |
| 【問題】QuiXplorer.v2.3.1 權限問題 | ericshn | ☉ -- 架 站 DIY 討 論 版 | 14 | 2007-03-01 11:28 PM |
| 請問使用yum 安裝apache2, php, mysql, php-mysql 的問題. | cpthk | -- FreeBSD & Linux 討 論 版 | 3 | 2005-09-23 12:29 AM |
| 明明就有寫到資料庫(mysql) 但是資料庫(mysql)裡面就是沒資料 怎麼辦呢...?? | Ezond | ☉ -- 架 站 DIY 討 論 版 | 4 | 2005-02-22 05:03 PM |
| 【教學】Instalation HOWTO for postfix with MySQL / complete virtual user | repsol | -- FreeBSD & Linux 討 論 版 | 0 | 2002-05-27 11:27 AM |
| XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。