將 MySQL SQL 語句覆蓋到 SQL Server
我正在安裝一個需要數據庫的產品——只要有可用的 jdbc 連接器,它就可以使用任何數據庫。但是,安裝指南僅包含有關如何使其與 MySQL 一起使用的說明。
我正在使用 SQL Server Express 執行它。
這些是 MySQL 的說明
CREATE DATABASE proddb; CREATE USER 'proddbusr'@'%' IDENTIFIED BY 'thepassword'; CREATE USER 'proddbusr'@'localhost' IDENTIFIED BY 'thepassword'; USE proddb; GRANT ALL PRIVILEGES ON *.* TO 'proddbusr'@'localhost' IDENTIFIED BY 'thepassword'; GRANT ALL PRIVILEGES ON *.* TO 'proddbusr'@'%' IDENTIFIED BY 'thepassword'; FLUSH PRIVILEGES;
CREATE DATABASE 語句在 SQL Server 上執行良好。
然而,下一個陳述令人窒息。似乎數據庫名稱不應該在 SQL Server 中用引號引起來。但是,我不確定 SQL Server 中 ‘%’ 的等價物是什麼。同樣對於
'proddb'@'localhost'
.SQL Server 也會
*.*
在 GRANT 語句中阻塞。熟悉 SQL Server 的人可以幫我將所有這些語句轉換為 SQL Server 的等效語句嗎?
更新:
瀏覽了 bartlaarhoven 提供的連結。
CREATE DATABASE proddb; CREATE LOGIN proddbusr with PASSWORD = 'thepassword'; CREATE USER proddbusr for LOGIN proddb;
到此為止。
但是,尚不清楚 username@’%’ 和 username@’localhost 在 SQL Server 中是如何翻譯的。
也是在那之後。
USE proddb;
這行得通。
下一個語句有問題。
GRANT ALL PRIVILEGES ON *.* to proddb;
SQL Server 無法辨識*.* .
我把它改成了
GRANT ALL PRIVILEGES to proddb;
這給了我錯誤
The ALL permission is deprecated and maintained only for compatibility. It DOES NOT imply ALL permissions defined on the entity.
。無論如何,在 SQL Server Management Express 中,我執行了以下操作。右鍵點擊數據庫 proddb 中的使用者 proddb -> 屬性。在“Owned Schemas”和“Database Role Memberships”視窗中授予所有可能的權限,但每個視窗中的 2 個拒絕權限除外。這類似於“授予所有特權”嗎?
SQL Server 對此的工作方式不同。您為使用者創建一個帶有密碼的LOGIN ,該密碼獨立於其主機名或類似名稱。
然後,您通過在數據庫上為某個 LOGIN創建一個USER來授予對數據庫的訪問權限。
然後您授予使用者權利。
閱讀這些連結,你會得到你需要的東西。
在 SQL Server 上,您創建一個登錄名/使用者,如下所示:
USE master GO CREATE LOGIN USER01 WITH PASSWORD = 'PASSword'
然後你像這樣使用 GRANT 來授予對任何數據庫的更改:
USE master GO GRANT ALTER to any DATABASE TO USER01 GO