MySQLとPHPのデータ管理方法

王林
リリース: 2023-06-03 16:04:04
転載
1231 人が閲覧しました

データ コントロール言語

データ コントロール言語 (データ コントロール言語) は、データベース ユーザーまたはロールの権限を設定または変更するために使用されるステートメントです。

レベル 説明
グローバル レベル 特定のサーバー内のすべてのデータベースに適用されます。これらの権限は mysql に保存されます。ユーザー テーブルの
データベース階層 は、特定のデータベース内のすべてのターゲットに適用されます。これらの権限は、mysql.db テーブルと mysql.host テーブルに保存されます
テーブル レベル 特定のテーブル内のすべての列に適用されます。これらの権限は、mysql.tables_priv の
列に保存されます。テーブル階層 指定されたテーブル内の単一の列に使用します。これらの権限は mysql.columns_priv テーブルに保存されます
サブルーチン階層 CREATE ROUTINE 、ALTER ROUTINE、EXECUTE、および GRANT 権限は、保存されたサブルーチンに適用されます。これらの権限は、グローバル レベルおよびデータベース レベルで付与できます。

MySQL 権限システム

MySQL の権限情報は主に次のテーブルに保存されます。ユーザーがデータベースに接続すると、MySQL はこれらのテーブルに基づいてユーザーの権限を検証します。

#テーブル名 説明##userdbtable_privcolumn_privprocs_privユーザー管理
ユーザー権限テーブル、アカウント番号、パスワード、およびグローバル権限情報を記録します
レコード データベース関連の権限
ユーザーが特定のテーブルに対して持つ権限
テーブルの列に対するユーザーの権限
ストアド プロシージャおよびストアド関数に対するユーザーの権限

MySQL では、CREATE USER を使用してユーザーを作成します。作成後、ユーザーには権限がありません。

すべてのユーザーを表示:

MySQLとPHPのデータ管理方法ユーザーの作成

MySQL ユーザー アカウントは、ユーザー名とホスト名の 2 つの部分で構成されます。つまり、ユーザー名@ホスト名です。ホスト名は IP またはマシンにすることができます。名前、ホスト名

%

は、どこのホストでも MySQL データベースにリモートでログインできることを意味します。 形式:

CREATE USER 'ユーザー名' [@ 'ホスト名'][IDENTIFIED BY 'パスワード'];

例:
<?php

$conn = mysqli_connect("localhost", "root","admin","mysql");

if ($conn) {
    echo "数据库连接成功\n";
} else {
    echo mysqli_connect_error();
}

# SQL语句
$SQL = "CREATE USER &#39;user1&#39;@&#39;%&#39;
        IDENTIFIED BY &#39;123456&#39;";

# 执行
$result = mysqli_query($conn, $SQL);

# 查看是否执行成功
if ($result) {
    echo "SQL 语句执行成功!\n";
}else {
    echo mysqli_error($conn);
}

# 关闭连接
mysqli_close($conn);

?>
ログイン後にコピー

効果:

MySQLとPHPのデータ管理方法削除user

形式:

DROP USER 'ユーザー名‘[@'ホスト名']

例:
<?php

$conn = mysqli_connect("localhost", "root","admin","mysql");

if ($conn) {
    echo "数据库连接成功\n";
} else {
    echo mysqli_connect_error();
}

# SQL语句
$SQL = "DROP USER &#39;user1&#39;@&#39;%&#39;";

# 执行
$result = mysqli_query($conn, $SQL);

# 查看是否执行成功
if ($result) {
    echo "SQL 语句执行成功!\n";
}else {
    echo mysqli_error($conn);
}

# 关闭连接
mysqli_close($conn);

?>
ログイン後にコピー

パスワードの変更

形式:

ALTER USER 'ユーザー名'@'ホスト名' IDENTIFIED BY '新しいパスワード';

例:
<?php

$conn = mysqli_connect("localhost", "root","admin","mysql");

if ($conn) {
    echo "数据库连接成功\n";
} else {
    echo mysqli_connect_error();
}

# SQL语句
$SQL = "ALTER USER &#39;root&#39;@&#39;localhost&#39; 
        IDENTIFIED BY &#39;123456&#39;";

# 执行
$result = mysqli_query($conn, $SQL);

# 查看是否执行成功
if ($result) {
    echo "SQL 语句执行成功!\n";
}else {
    echo mysqli_error($conn);
}

# 关闭连接
mysqli_close($conn);

?>
ログイン後にコピー

Permission Management

MySQL は

GRANT

REVOKE を使用して承認と承認を取り消します。権限は、具体的にはデータ カテゴリ、構造カテゴリ、管理クラスの 3 つのカテゴリに分類されます.

データ## SELECTINSERTUPDATEINDEXスーパー

查看权限

格式:

SHOW GRANTS FOR '用户名'[@'主机名']

例子:

<?php

$conn = mysqli_connect("localhost", "root","admin");

if ($conn) {
    echo "数据库连接成功\n";
} else {
    echo mysqli_connect_error();
}

# SQL语句
$SQL = "SHOW GRANTS FOR &#39;root&#39;@&#39;localhost&#39;";

# 执行
$result = mysqli_query($conn, $SQL);

# 查看是否执行成功
if ($result) {
    echo "SQL 语句执行成功!\n";
}else {
    echo mysqli_error($conn);
}

# 调试输出
while ($line = mysqli_fetch_assoc($result)) {
    print_r($line);
}

# 关闭连接
mysqli_close($conn);

?>
ログイン後にコピー

输出结果:

数据库链接成功
SQL 语句执行成功!
Array
(
[Grants for root@localhost] => GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`localhost` WITH GRANT OPTION
)
Array
(
[Grants for root@localhost] => GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,AUTHENTICATION_POLICY_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,FLUSH_OPTIMIZER_COSTS,FLUSH_STATUS,FLUSH_TABLES,FLUSH_USER_RESOURCES,GROUP_REPLICATION_ADMIN,GROUP_REPLICATION_STREAM,INNODB_REDO_LOG_ARCHIVE,INNODB_REDO_LOG_ENABLE,PASSWORDLESS_USER_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `root`@`localhost` WITH GRANT OPTION
)
Array
(
[Grants for root@localhost] => GRANT PROXY ON ``@`` TO `root`@`localhost` WITH GRANT OPTION
)

用户授权

格式:

GRANT ALL PRIVILEGES ON 数据库名.表名 TO '用户名'[@'主机名']

例子:

<?php

$conn = mysqli_connect("localhost", "root","admin");

if ($conn) {
    echo "数据库连接成功\n";
} else {
    echo mysqli_connect_error();
}

# SQL语句
$SQL = "GRANT ALL PRIVILEGES ON study.table1 TO &#39;user1&#39;@&#39;%&#39;";

# 执行
$result = mysqli_query($conn, $SQL);

# 查看是否执行成功
if ($result) {
    echo "SQL 语句执行成功!\n";
}else {
    echo mysqli_error($conn);
}

# 关闭连接
mysqli_close($conn);

?>
ログイン後にコピー

撤销授权

REVOKE ALL PRIVILEGES ON 数据库名.表名 from '用户名'[@'主机名']

例子:

<?php

$conn = mysqli_connect("localhost", "root","admin");

if ($conn) {
    echo "数据库连接成功\n";
} else {
    echo mysqli_connect_error();
}

# SQL语句
$SQL = "REVOKE ALL PRIVILEGES ON study.table1 FROM &#39;user1&#39;@&#39;%&#39;";

# 执行
$result = mysqli_query($conn, $SQL);

# 查看是否执行成功
if ($result) {
    echo "SQL 语句执行成功!\n";
}else {
    echo mysqli_error($conn);
}

# 关闭连接
mysqli_close($conn);

?>
ログイン後にコピー

刷新权限

格式:

FLUSH PRIVILEGES

注意事项

禁止 root 远程登录.

禁止 root 远程登录的原因:

  • root 是 MySQL 数据库的超级管理员. 几乎拥有所有权限, 一旦泄露后果非常严重

  • root 是 MySQL 数据库的默认用户. 如果不禁止远程登录, 则某些人可以针对 root 用户暴力破解密码

以上がMySQLとPHPのデータ管理方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
構造管理
DELETE
FILE

CREATE
ALTER
DROP
一時テーブルの作成
ビューの表示
ルーチンの作成
ルーチンの変更
実行
ビューの作成
イベント
トリガー

使用法
許可
プロセス
リロード
シャットダウン
データベースの表示
テーブルのロック
リファレンス
REPUCATION CUENT
REPUCATION SLAVE
CREATE USER