Maison > base de données > tutoriel mysql > le corps du texte

Méthodes de contrôle des données de MySQL et PHP

王林
Libérer: 2023-06-03 16:04:04
avant
1230 Les gens l'ont consulté

Data Control Language

Data Control Language (Data Control Language) est une instruction utilisée pour définir ou modifier les autorisations des utilisateurs ou des rôles de base de données. Toutes les bases de données d'un serveur donné. Ces autorisations sont stockées dans la table mysql.user

La hiérarchie de la base de données s'applique à toutes les cibles d'une base de données donnée. Ces autorisations sont stockées dans les tables mysql.db et mysql.host Le niveau de la table s'applique à toutes les colonnes d'une table donnée. Ces autorisations sont stockées dans la table mysql.tables_priv. Le niveau de la colonne s'applique à une seule colonne d'une table donnée. niveau de sous-programmeLes autorisations CREATE ROUTINE, ALTER ROUTINE, EXECUTE et GRANT dans la table mysql.columns_priv s'appliquent aux sous-programmes stockés. Ces autorisations peuvent être accordées au niveau global et au niveau de la base de données Autorisations MySQL Systèmedbtable_priv
.
. Les informations d'autorisation de MySQL sont principalement stockées dans les tableaux suivants. Lorsqu'un utilisateur se connecte à la base de données, MySQL vérifiera les autorisations de l'utilisateur en fonction de ces tableaux, du compte d'enregistrement, du mot de passe et des informations d'autorisation globales
enregistrements. autorisations liées à la base de données
autorisations de l'utilisateur sur une certaine table

column_privutilisateur sur une certaine table Autorisations détenues par une colonneAutorisations de l'utilisateur pour utiliser des procédures stockées et des fonctions stockées Gestion des utilisateursDans MySQL, utilisez CREATE USER pour créer des utilisateurs. Les utilisateurs n'ont aucune autorisation après la création.Afficher tous les utilisateurs :Créer un utilisateur
CRÉER UN UTILISATEUR 'nom d'utilisateur' [@'hostname'][IDENTIFIÉ PAR 'mot de passe'];
<?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);

?>
Copier après la connexion
Méthode de contrôle des données MySQL et PHP
DROP USER 'Nom d'utilisateur‘[@'hostname']
procs_priv
Le compte utilisateur MySQL se compose de deux parties : nom d'utilisateur et nom d'hôte, c'est-à-dire nom d'utilisateur@nom d'hôte, le nom d'hôte peut être une adresse IP ou un nom de machine, le nom d'hôte % signifie permettre aux hôtes n'importe où de se connecter à distance à la base de données MySQL. Format :
Exemple :Effet :
Supprimer l'utilisateurFormat :
Exemple :

<?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);

?>
Copier après la connexion

Changer le mot de passe

Format :

ALTER USER 'Username'@'Hostname' IDENTIFIÉ PAR 'Nouveau mot de passe';

Méthodes de contrôle des données de MySQL et PHPExemple :

<?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);

?>
Copier après la connexion

Gestion des autorisations

MySQL utilisant GRANT et REVOKE pour autoriser et révoquer l'autorisation. Les autorisations sont divisées en 3 catégories, catégorie de données, catégorie de structure et catégorie de gestion %表示允许任何地方的主机远程登录 MySQL 数据库.

格式:

CREATE USER '用户名' [@'主机名'][IDENTIFIED BY '密码'];

例子:

<?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);

?>
Copier après la connexion
Copier après la connexion

效果:

Méthodes de contrôle des données de MySQL et PHP

删除用户

格式:

DROP USER '用户名‘[@'主机名']

例子:

<?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);

?>
Copier après la connexion
Copier après la connexion

修改密码

格式:

ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';

例子:

<?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);

?>
Copier après la connexion
Copier après la connexion

权限管理

MySQL 使用GRANTREVOKE

. structuregestionSELECTCREATEUTILISATION

查看权限

格式:

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);

?>
Copier après la connexion
Copier après la connexion

输出结果:

数据库链接成功
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);

?>
Copier après la connexion
Copier après la connexion

撤销授权

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);

?>
Copier après la connexion
Copier après la connexion

刷新权限

格式:

FLUSH PRIVILEGES

注意事项

禁止 root 远程登录.

禁止 root 远程登录的原因:

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

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

INSERT
UPDATE
DELETE
FILE
ALTER
INDEX
DROP
CREATE TABLES
SHOW VUE
CRÉER UNE ROUTINE
ALTER LA ROUTINE
EXECUTER
CRÉER UNE VUE
ÉVÉNEMENT
TRIGGER
GRANT
SUPER
PROCESS
RELOAD
ARRÊT
AFFICHER LES BASES DE DONNÉES
VERROUILLER LES TABLES
RÉFÉRENCES
REPUCATION CUENT
REPUCATION SLAVE
CREATE USER

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal