Chapter2UserAuthentication,Authorization,andSecurity(9):
原文出处:http://blog.csdn.net/dba_huangzj/article/details/39003679,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以原创形式发布,也不得已用于商业用途,本人不负责任何法律责任。 前一篇:http://b
原文出处:http://blog.csdn.net/dba_huangzj/article/details/39003679,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349未经作者同意,任何人不得以“原创”形式发布,也不得已用于商业用途,本人不负责任何法律责任。
前一篇:http://blog.csdn.net/dba_huangzj/article/details/38944121
前言:
在SQL Server 2005之前,所有服务器和数据库元数据都是所有人可见的。当基于网银的系统把SQL Server实例共享给客户时,有可能可以看到其他用户的信息。从2005开始,可以通过控制权限来限制登录名或用户查看不必要的元数据。
实现:
如果你需要把数据库对所有登录名隐藏,可以移除public角色上的VIEW ANY DATABASE权限:
USE master; GO REVOKE VIEW ANY DATABASE TO public;
允许某些帐号查看所有数据库时,可以创建一个用户自定义服务器角色:
USE master; CREATE SERVER ROLE [DatabaseViewer]; GO GRANT VIEW ANY DATABASE TO [DatabaseViewer]; ALTER SERVER ROLE [DatabaseViewer] ADD MEMBER [Fred];
注意,master和tempdcb总是对所有登录可见。
你不能选择性地对某些数据库设置可见,一个登录要么能从【对象资源管理器】中看到所有数据库,要么所有库都不能被看到。如果一个登录名被授予VIEW ANY DATABASE服务器权限,那么可以在【对象资源管理器】中看到服务器所有数据库,或者从sys.databases 目录视图中查询所有的数据库。如果登录名没有这个权限但是映射到某个数据库的用户中,那么它依旧不能看到所有数据库,但是可以使用sys.databases返回数据库信息,并且使用USE 数据库命令来切换数据库。
允许选择性地可见数据库的唯一方式是让登录名作为数据库的owner:
ALTER AUTHORIZATION ON DATABASE::marketing TO [Fred];
数据库的owner有数据库内所有权限,但是一个数据库只有一个owner。不能让多个登录名同时对一个数据库进行owner设置。
在数据库内,可以定义特定数据库对象为某些用户可见,在SSMS中,右键数据库的【安全性】节点,选择【用户】→【属性】中的【安全对象】,然后在【查找】中添加特定对象,比如表、存储过程或者架构。然后勾选【查看定义】的【授予】列:
也可以用命令实现,这里注意上图中的【脚本】,当你不记得命令时,可以点一下这个按钮,会自动生成代码:
use [AdventureWorks2012] GO GRANT VIEW DEFINITION ON [dbo].[AWBuildVersion] TO [test] GO
原理:
可以用下面语句查看可被授权的元数据权限:
SELECT parent_class_desc AS parent , class_desc AS class , permission_name AS permission FROM sys.fn_builtin_permissions(NULL) WHERE permission_name LIKE 'VIEW%' ORDER BY CASE parent_class_desc WHEN '' THEN 0 WHEN 'SERVER' THEN 1 WHEN 'DATABASE' THEN 2 WHEN 'SCHEMA' THEN 3 END , class , permission;
【查看定义】的权限是可以在非服务器范围内查看的权限。如果需要在所有范围内查看,需要使用【VIEW ANY DEFINITION】,授予这个权限可以允许登录查看实例中的所有定义,【查看所有数据库】适合那些仅需要访问数据库但是不需要访问服务器其他对象的登录名。
在数据库中,用户可以看到自己有权限的对象,默认情况下,一个用户仅是public数据库角色的成员,是没有权限的。使用db_datareader固定数据库角色可以允许这个用户看到所有表,授予VIEW DEFINITION给存储过程、函数或者触发器,允许你看到其底层代码。如果你不想让别人看到,可以在创建对象时使用WITH ENCRYPTION(在后续介绍。)

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

INNODBのフルテキスト検索機能は非常に強力であり、データベースクエリの効率と大量のテキストデータを処理する能力を大幅に改善できます。 1)INNODBは、倒立インデックスを介してフルテキスト検索を実装し、基本的および高度な検索クエリをサポートします。 2)一致を使用してキーワードを使用して、ブールモードとフレーズ検索を検索、サポートします。 3)最適化方法には、単語セグメンテーションテクノロジーの使用、インデックスの定期的な再構築、およびパフォーマンスと精度を改善するためのキャッシュサイズの調整が含まれます。

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

完全なテーブルスキャンは、MySQLでインデックスを使用するよりも速い場合があります。特定のケースには以下が含まれます。1)データボリュームは小さい。 2)クエリが大量のデータを返すとき。 3)インデックス列が高度に選択的でない場合。 4)複雑なクエリの場合。クエリプランを分析し、インデックスを最適化し、オーバーインデックスを回避し、テーブルを定期的にメンテナンスすることにより、実際のアプリケーションで最良の選択をすることができます。

クラスター化されたインデックスと非クラスター化されたインデックスの違いは次のとおりです。1。クラスター化されたインデックスは、インデックス構造にデータを保存します。これは、プライマリキーと範囲でクエリするのに適しています。 2.非クラスター化されたインデックスストアは、インデックスキー値とデータの行へのポインターであり、非プリマリーキー列クエリに適しています。

はい、MySQLはWindows 7にインストールできます。MicrosoftはWindows 7のサポートを停止しましたが、MySQLは引き続き互換性があります。ただし、インストールプロセス中に次のポイントに注意する必要があります。WindowsのMySQLインストーラーをダウンロードしてください。 MySQL(コミュニティまたはエンタープライズ)の適切なバージョンを選択します。インストールプロセス中に適切なインストールディレクトリと文字セットを選択します。ルートユーザーパスワードを設定し、適切に保ちます。テストのためにデータベースに接続します。 Windows 7の互換性とセキュリティの問題に注意してください。サポートされているオペレーティングシステムにアップグレードすることをお勧めします。
