MySQL&C++快速上手(五)创建用户和授权

创建用户指令:

CREATE USER '用户名'@'范围' IDENTIFIED BY '密码';

范围包括:ip、localhost、%
ip 即只能从指定地址登录
localhost 即只能从本机登录
% 即可以从任何地址登录

创建用户后需要为用户授权,才可操作数据库
授权指令:

GRANT privileges ON databasename.tablename TO '用户名'@'范围' 
privileges 可以是:
SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,EXECUTE,INDEX,REFERENCES
ALTER ROUTINE,CREATE ROUTINE,CREATE TEMPORARY,SHOW VIEW,LOCK TABLES
ALL
databasename 是库的名称,可以填入 * 表示所有
tablename 是表的名称,可以填入 * 表示所有

撤销权限指令:

REVOKE 权限 ON databasename.tablename FROM '用户名'@'范围'

代码范例:

	MYSQL* mysql = new MYSQL();
    MYSQL* pDB = mysql_init(mysql);
    if (pDB == NULL) {
        std::cout << "mysql_init failed" << std::endl;
        return -1;
    }

    pDB = mysql_real_connect(pDB, "localhost", "root", "root", "mysql", 3306, NULL, 0);

    if (pDB) {

        // 创建用户
        std::string sql = "CREATE USER 'hello'@'localhost' IDENTIFIED BY '123456'"; 
        int ret = mysql_real_query(mysql, sql.c_str(), (unsigned long)sql.size());
        if (ret != 0) {
            std::cout << "mysql error: " << mysql_error(pDB) << std::endl;
            return -1;
        }
        MYSQL_RES* res = mysql_use_result(mysql);
        if (res) {
            show_result(res);

            mysql_free_result(res);
        }

        // 对新创建的用户进行授权 赋予该用户所有数据库的所有表的所有权限
        sql = "GRANT ALL ON *.* TO 'hello'@'localhost'";
        ret = mysql_real_query(mysql, sql.c_str(), (unsigned long)sql.size());
        if (ret != 0) {
            std::cout << "mysql error: " << mysql_error(pDB) << std::endl; 
            return -1;
        }
        res = mysql_use_result(mysql);
        if (res) {
            show_result(res);

            mysql_free_result(res);
        }
        
        mysql_close(pDB);
        std::cout << pDB << std::endl;
        delete mysql;
    }
    
    mysql = nullptr;

执行后可以看到新的用户hello
在这里插入图片描述
可以看到用户的权限
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值