【问题标题】:How to create user and grant permission MySql如何创建用户并授予权限 MySql
【发布时间】:2015-04-15 06:05:31
【问题描述】:

我正在尝试在 MySql 数据库上创建一个新用户并授予他们仅查看权限,以便他们可以环顾四周而实际上无法更改任何内容。我试过以下代码:

string query = "INSERT INTO users(user_name, password, admin) VALUES('" + usernameTextBox.Text + "','" + passwordTextBox.Text + "', '1')";
MySqlCommand command = new MySqlCommand(query, databaseConnection);
command.ExecuteNonQuery();


query = "CREATE USER '" + usernameTextBox.Text + "' IDENTIFIED BY '" + passwordTextBox.Text + "'";
command = new MySqlCommand(query, databaseConnection);
command.ExecuteNonQuery();

query = "GRANT SELECT, SHOW DATABASES ON database.* TO '" + usernameTextBox.Text + "'@'%'";
command = new MySqlCommand(query, databaseConnection);
command.ExecuteNonQuery();

我收到以下错误:

DB GRANT 和 GLOBAL PRIVILEGES 的错误使用

我一直在尝试阅读 MySql 的文档并在 Stack Overflow 上阅读其他问题,但是我似乎无法弄清楚

【问题讨论】:

    标签: c# mysql


    【解决方案1】:

    CREATE USER、FILE、PROCESS、RELOAD、REPLICATION CLIENT、REPLICATION SLAVE、SHOW DATABASES、SHUTDOWN 和 SUPER 权限是管理权限,只能全局授予。 不能应用于单个数据库 您需要拆分授权查询

    GRANT SHOW DATABASES ON *.* TO 'username'@'%'; -- GRANT TO ALL DATABASES
    GRANT SELECT ON database.*  TO 'username'@'%';
    

    附:并且您的代码对于 SQL 注入不安全,您必须使用 prepared statements

    【讨论】:

      【解决方案2】:

      MySQL 或 MariaDB 中授予权限

      GRANT ALL PRIVILEGES ON DatabaseName.* TO 'username'@'%' WITH GRANT OPTION;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-04
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2020-12-08
        相关资源
        最近更新 更多