程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫下用戶及用戶權限設置裝備擺設

MySQL數據庫下用戶及用戶權限設置裝備擺設

編輯:MySQL綜合教程

MySQL數據庫下用戶及用戶權限設置裝備擺設。本站提示廣大學習愛好者:(MySQL數據庫下用戶及用戶權限設置裝備擺設)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL數據庫下用戶及用戶權限設置裝備擺設正文


成績:應用某年夜腿寫的長途對象治理Mysql數據庫時發明一切數據能正常顯示,然則沒法停止刪除、修正等操作。

  思緒:可以長途讀取到數據庫裡的信息,解釋以後主機可以長途銜接數據庫。卻沒法停止刪除、修正這些操作,解釋某些權限並未付與以後長途用戶。

  處理辦法:

  檢查以後用戶權限

show grants for username

  顯示以後用戶下的權限為:select,insert,update,delete

GRANT USAGE ON *.* TO 'username'@'host' IDENTIFIED BY PASSWORD '*BB318072E265C419B3E1E19A4DAD1FA969B9B4D4' //只可以在當地上岸的 不克不及操作的用戶
GRANT SELECT, INSERT, UPDATE, DELETE ON `dbName`.* TO 'usename'@'host' //此用戶具有select/insert/update/delelte權限

  如許看來,應當是具有刪除、修正這些權限的,可是在長途對象上卻不克不及停止操作。

  細心排查後,發明年夜腿寫的這個對象對數據庫的操作根本上都是經由過程函數履行的,我這個用戶的權限裡並未付與存儲進程、存儲函數的相干權限,固然就不克不及停止相干操作了

  因而,給用戶添加存儲進程及存儲函數權限

GRANT DELETE, INDEX, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `dbName`.* TO 'username'@'host'

  檢查用戶權限為

GRANT USAGE ON *.* TO 'username'@'host' IDENTIFIED BY PASSWORD '*938D2D224D12DAD427AB953B931EA6DF0CF0656A'
GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON `dbName`.* TO 'username'@'host'

  再應用長途對象,可准確應用

-----------------------------------------------------------------------------------------------------

  附:導入數據庫自界說函數

mysqldump -uroot -ntd -R dbName > dbName.sql

  發明導入湧現毛病信息

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

  毛病信息1481,當導入自界說函數時相當於創立自界說函數到數據庫中,然則由於有一個平安參數沒有開啟,log_bin_trust_function_creators 默許為0(即OFF),

是不許可function的同步的(也就是說不許可創立函數),開啟這個參數,便可以創立勝利了。

  檢查log_bin_trust_function_creators值

> show variables like "%func%"
--------------------------------------
|Variable_name |Value|
--------------------------------|-----
|log_bin_trust_function_creators| OFF |
--------------------------------------

  value為OFF,解釋是不許可創立函數,修正這個值,便可

> set global log_bin_trust_function_creators=1;
>show variables like "%func%"
--------------------------------------
|Variable_name |Value|
--------------------------------|-----
|log_bin_trust_function_creators| ON |

  留意:導入完成跋文得把值設回0(即OFF),詳細緣由就不細說了。

以上所述是小編給年夜家引見的MySQL數據庫下用戶及用戶權限設置裝備擺設,願望對年夜家有所贊助,假如年夜家有任何疑問迎接給我留言,小編會實時答復年夜家的!

�式地封閉文件或許沒用“with”代碼塊,那末Python會什麼時候封閉文件?也就是說,假如我讓文件主動封閉,那末會產生甚麼?

我老是假定當對象的援用計數降為0時,Python會封閉文件,進而渣滓收受接管機制清算文件對象。當我們讀文件時很難證實或核實這一點,但寫入文件時卻很輕易。這是由於當寫入文件時,內容其實不會立刻刷新到磁盤(除非你向“open”辦法的第三個可選參數傳入“False”),只要當文件封閉時才會刷新。

因而我決議做些試驗以便更好地輿解Python究竟能主動地為我做甚麼。我的試驗包含翻開一個文件、寫入數據、刪除援用和加入Python。我很獵奇數據是甚麼時刻會被寫入,假如有的話。

我的試驗是這個模樣:

f = open('/tmp/output', 'w')
f.write('abcn')
f.write('defn')
# check contents of /tmp/output (1)
del(f)
# check contents of /tmp/output (2)
# exit from Python
# check contents of /tmp/output (3)

我在Mac平台上用Python 2.7.9 做了第一個試驗,申報顯示在階段一文件存在然則是空的,階段二和階段三中文件包括一切的內容。如許,在CPython 2.7中我最後的直覺仿佛是准確的:當一個文件對象被渣滓收受接管時,它的 __del__ (或許等價的)辦法會刷新並封閉文件。並且在我的IPython過程中挪用“lsof”敕令顯示文件確切在援用對象移除後被封閉了。

那 Python3 若何呢?我在Mac上 Python 3.4.2 情況下做了以上的試驗,獲得了雷同的成果。移除對文件對象最初的援用後會招致文件被刷新而且被封閉。

這關於 Python 2.7 和 3.4 很好。然則在 PyPy 和 Jython下的替換完成會如何呢?也許情形會有些分歧。

因而我在 PyPy 2.7.8 下做了雷同的試驗。而此次,我獲得了分歧的成果!刪除文件對象的援用後——也就是在階段2,並沒有招致文件內容被刷入磁盤。我不能不假定這和渣滓收受接管機制的分歧或其他在 PyPy 和 CPython中任務機制的分歧有關系。然則假如你在 PyPy中運轉法式,就毫不要期望僅僅由於文件對象的援用停止,文件就會被刷新和封閉。敕令 lsof 顯示直到Python過程加入時文件才會被釋放。

為了好玩,我決議測驗考試一下 Jython 2.7b3. 成果Jython 表示出了和PyPy一樣的行動。也就是說,從 Python 加入確切會確保緩存中的數據寫入磁盤。

我重做了這些試驗,然則我把 “abcn”和 “defn”換成了 “abcn”*1000 和“defn”*1000.

在 Python 2.7 的情況下,“abcn” * 1000 語句履行後沒有任何器械寫入。但“defn” * 1000 語句履行後,文件包括有4096個字節——能夠代表緩沖區的年夜小。挪用 del(f) 刪除文件對象的援用招致數據被刷入磁盤和文件封閉,此時文件中共有8000字節的數據。所以疏忽字符串年夜小的話 Python 2.7 的行動表示根本雷同。獨一分歧的是假如超越了緩沖區的年夜小,那末一些數據將在最初文件封閉數據刷新前寫入磁盤。

換做是Python 3的話,情形就有些分歧了。f.write履行後沒有任何數據會寫入。然則文件對象援用一旦停止,文件就會刷新並封閉。這能夠是緩沖區很年夜的原因。但毫無疑問,刪除文件對象援用會使文件刷新並封閉。

至於 PyPy 和 Jython,對年夜文件和小文件的操作成果都一樣:文件在 PyPy 或 Jython 過程停止的時刻刷新並封閉,而不是在文件對象的援用停止的時刻。

為了再次確認,我又應用 “with” 停止了試驗。在一切情形下,我們都可以或許輕松的猜測文件是什麼時候被刷新和封閉的——就是當加入代碼段,而且高低文治理器在後台挪用適合辦法的時刻。

換句話說,假如你不應用“with”,那末至多在異常簡略的情況下,你的數據紛歧定有喪失的風險。但是你照樣不克不及肯定數據究竟是在文件對象援用停止照樣法式加入的時刻被保留的。假如你假定由於對文件獨一的援用是一個當地變量所以文件在函數前往時會封閉,那末現實必定會讓你覺得受驚。假如你有多個過程或線程同時對一個文件停止寫操作,那末你真的要異常當心了。

也許這個行動可以更好地界說不便可以在分歧的平台上表示得根本分歧了嗎?或許我們乃至可以看看Python標准的開端,而不是指著CPython說“Yeah,不論版本若何老是對的”。

我仍然認為“with”和高低文治理器很棒。並且我想關於Python老手,懂得“with”的任務道理很難。但我照樣不能不提示老手開辟者留意:假如他們決議應用Python的其他可選版本,那末會湧現許多分歧於CPython的怪僻情形並且假如他們不敷當心,乃至會深受其害。

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