ビデオ: SQL(基本編その1) 2024
MySQLがインストールされると、自動的にmysql というデータベースが作成されます。 データを保護するために使用されるすべての情報は、アカウント名、ホスト名、パスワード、特権など、このデータベースに格納されます。
特権は列に格納されます。各列名の形式は 特権 _privです。 特権 は特定のアカウント特権です。たとえば、ALTER権限を含む列の名前はalter_privです。各特権列の値は、YまたはNです(yesまたはnoを意味します)。
<! --1 - >たとえば、userテーブルでは、アカウントの行とalter_privの列があります。 alter_privのアカウントフィールドにYが含まれている場合は、そのアカウントを使用してALTER文を実行できます。 alter_privにNが含まれている場合、アカウントにはALTER文を実行する権限がありません。
mysqlデータベースには、特権を格納する以下のテーブルが含まれます。
-
user table: このテーブルには、すべてのデータベースとテーブルに適用される特権が格納されます。これには、列のユーザー名、ホスト名、およびパスワードを含む有効な各アカウントの行が含まれています。 MySQLサーバは、このテーブルに存在しないアカウントの接続を拒否します。
-
db テーブル: このテーブルには、特定のデータベースに適用される特権が格納されます。これにはデータベースの行が含まれ、アカウント名とホスト名に権限を与えます。権限が付与されるためには、アカウントがユーザーテーブルに存在していなければなりません。ユーザー表に指定されている特権は、この表の特権を無効にします。
たとえば、ユーザーテーブルにINSERT権限を与えるアカウントデザイナの行がある場合、デザイナはすべてのデータベースに挿入できます。 dbテーブルの行が、PetCatalogデータベースのデザイナーアカウントのINSERTにNを表示する場合、ユーザーテーブルはそれを覆し、デザイナーはPetCatalogデータベースに挿入できます。
<! - 3 - > -
ホスト テーブル: このテーブルは、ホストに応じてデータベースへのアクセスを制御します。ホストテーブルはdbテーブルで動作します。 dbテーブルのある行にホスト用の空のフィールドがある場合、MySQLはホストテーブルを調べて、そのデータベースに行があるかどうかを調べます。このようにして、いくつかのホストからのdbへのアクセスを許可できますが、他のホストからのアクセスは許可しません。
たとえば、db1とdb2の2つのデータベースがあるとします。 db1データベースには機密情報が含まれているため、特定の人にのみ表示させたいとします。 db2データベースには、皆に見せたい情報があります。 DB1の空白ホストフィールドを持つdbテーブルの行がある場合、ホストテーブルのdb1に2つの行を割り当てることができます。
ある行は、特定のホストから接続しているユーザーにすべての特権を与えることができますが、別の行は他のホストから接続しているユーザーに対して特権を拒否できます。
-
tables_priv table: このテーブルには、特定のテーブルに適用される特権が格納されます。
-
columns_priv table: この表には、特定の列に適用される権限が格納されます。
必要な権限を持つアカウントを使用している場合は、mysqlのテーブルを直接表示および変更できます。 SELECT、INSERT、UPDATEなどのSQLクエリを使用できます。雇用主、クライアント、またはWebホスティング会社を通じてMySQLにアクセスしている場合は、必要な権限を持つアカウントを持っていない可能性があります。