ホームページ  >  記事  >  データベース  >  MySQLとPHPのデータ管理方法

MySQLとPHPのデータ管理方法

王林
王林転載
2023-06-03 16:04:041224ブラウズ

データ コントロール言語

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

レベル 説明
グローバル レベル 特定のサーバー内のすべてのデータベースに適用されます。これらの権限は 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 用户暴力破解密码

構造 管理
DELETE
FILE

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

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


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

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。