mysql/mongodb数据库创建普通用户并赋予权限

一、mysql数据库创建普通用户并赋予权限

1.创建用户并赋予权限

在MySQL数据库中创建一个普通账号,您需要使用CREATE USER语句来创建用户,然后使用GRANT语句来为该用户分配权限。以下是一个基本的示例:

  1. 登录到MySQL服务器
    首先,您需要以具有足够权限的用户(通常是root用户)登录到MySQL服务器。
mysql -u root -p
  1. 创建新用户账号
    在MySQL命令行客户端中,使用以下SQL语句来创建一个新用户:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • username 是您想要创建的用户名。
  • host 是该用户可以连接的MySQL服务器地址。如果允许从任何主机连接,可以使用%。例如,'username'@'%'
  • password 是该用户的密码。
    例如,创建一个名为newuser,密码为userpassword,并且允许从任何主机连接的账号:
CREATE USER 'newuser'@'%' IDENTIFIED BY 'userpassword';
  1. 为用户分配权限
    创建用户后,您需要为该用户分配适当的权限。使用GRANT语句来完成这一步。
    例如,如果您希望该用户能够访问特定的数据库mydatabase,并且具有所有权限,可以使用以下语句:
GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'%';

如果您只想给用户有限的权限,例如只读权限,可以使用:

GRANT SELECT ON mydatabase.* TO 'newuser'@'%';

如果您只想给用户有限的权限,例如增删改查权限,可以使用:

GRANT SELECT, INSERT, UPDATE, DELETE ON mydatabase.* TO 'newuser'@'%';
  1. 刷新权限
    执行FLUSH PRIVILEGES命令来确保权限立即生效:
FLUSH PRIVILEGES;
  1. 退出MySQL命令行
    完成以上步骤后,您可以使用EXIT命令退出MySQL命令行:
EXIT;

现在,您已经创建了一个新的MySQL用户账号,并且分配了相应的权限。该用户可以尝试使用提供的凭据连接到MySQL服务器,并访问授权的数据库。

2.查看所创建的用户

要查看在MySQL数据库中创建的用户,您可以使用SHOW USERS命令或者查询mysql.user系统数据库表。以下是两种方法的示例:

方法1:使用SHOW USERS命令

在MySQL命令行客户端中,执行以下命令:

SHOW USERS;

或者,如果您想要查看更详细的信息,可以使用:

SHOW FULL USERS;
方法2:查询mysql.user

您也可以直接查询mysql数据库中的user表来查看所有用户及其相关信息。在MySQL命令行客户端中,执行以下命令:

USE mysql;
SELECT User, Host, Password FROM user;

这将显示所有用户的用户名(User)、允许连接的主机(Host)和加密后的密码(Password)。

注意事项
  • SHOW USERS命令可能不适用于所有版本的MySQL,特别是在较旧的版本中。在这种情况下,请使用查询mysql.user表的方法。
  • Password列显示的是加密后的密码,因此您看到的不会是明文密码。
  • 如果您使用的是MySQL 5.7或更高版本,密码字段可能会显示为authentication_string而不是Password
    确保您以具有足够权限的用户(如root)登录,才能查看其他用户的账户信息。如果您没有足够的权限,可能会遇到权限拒绝的错误。

3.修改所创建的用户密码

在MySQL数据库中,您可以使用SET PASSWORD语句或者ALTER USER语句来修改用户的密码。以下是两种方法的示例:

方法1:使用SET PASSWORD语句

要以root用户或具有足够权限的用户登录MySQL服务器,然后使用以下命令来修改另一个用户的密码:

mysql -u root -p

在MySQL命令行客户端中,执行以下命令:

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
  • username 是您想要修改密码的用户名。
  • host 是该用户可以连接的MySQL服务器地址。如果允许从任何主机连接,可以使用%
  • newpassword 是新密码。
    例如,修改用户newuser的密码:
SET PASSWORD FOR 'newuser'@'%' = PASSWORD('newpassword');
方法2:使用ALTER USER语句

您也可以使用ALTER USER语句来修改密码:

ALTER USER 'username'@'host' IDENTIFIED BY 'newpassword';

例如:

ALTER USER 'newuser'@'%' IDENTIFIED BY 'newpassword';
注意事项
  • PASSWORD('newpassword') 函数用于加密密码。在MySQL 8.0及更高版本中,您可以直接使用明文密码,而不需要PASSWORD()函数。
  • 在修改密码后,您可能需要执行FLUSH PRIVILEGES命令来确保权限立即生效,尤其是在旧版本的MySQL中。
    完成密码修改后,您可以使用EXIT命令退出MySQL命令行:
EXIT;

现在,用户newuser将使用新密码newpassword来连接到MySQL服务器。请确保在操作过程中拥有足够的权限,并且妥善保管好密码信息。

二、Mongodb数据库创建用户并赋予权限

1.创建账号并赋予权限

在MongoDB中,要赋予普通用户增删改查(CRUD)权限,您可以使用readWrite角色。这个角色允许用户在指定的数据库中进行读取和写入操作,包括插入、更新和删除文档。

以下是如何为用户赋予readWrite角色的步骤:

  1. 切换到管理员数据库

    use admin
    
  2. 以用户管理员身份登录(如果尚未登录)

    mongo -u userAdmin -p password --authenticationDatabase admin
    
  3. 创建普通用户并赋予权限
    假设您要在mydatabase数据库上为用户newUser赋予readWrite权限,您可以这样做:

    use mydatabase
    db.createUser({
      user: "newUser",
      pwd: "userpassword",
      roles: [{ role: "readWrite", db: "mydatabase" }]
    })
    

    这里的readWrite角色将允许newUsermydatabase数据库中进行插入、更新、读取和删除操作。

  4. 验证用户权限
    创建用户后,您可以尝试以该用户身份登录,以验证权限是否已正确分配。

    mongo -u newUser -p userpassword --authenticationDatabase mydatabase
    

    确保在执行这些操作时,您已经以具有足够权限的用户(如root或用户管理员)登录,并且您的MongoDB实例配置了适当的安全设置,如启用访问控制等。
    如果您需要更细粒度的权限控制,MongoDB还提供了其他内置角色,如readreadWritedbAdminclusterAdmin等,以及自定义角色的能力。

2.在项目中使用普通账号连接mongodb

如果您使用的是 mongoengine,一个与MongoDB集成的Python ORM库,那么您需要确保在创建连接时正确地设置了认证数据库。在 mongoengine 中,您通常会在初始化时设置连接,例如:

from mongoengine import connect
connect(
    db=MONGO_DBNAME,
    host=MONGO_HOST,
    port=MONGO_PORT,
    username=MONGO_USERNAME,
    password=MONGO_PASSWORD,
    authentication_source='toolchain-mongodb'  # 指定认证数据库
)

在上面的代码中,authentication_source 参数用于指定认证数据库。确保您已经将 MONGO_DBNAMEMONGO_HOSTMONGO_PORTMONGO_USERNAMEMONGO_PASSWORD 替换为实际的值。
如果您在连接时遇到认证错误,请检查以下几点:

  1. 环境变量或配置文件
    • 确保所有配置参数都是正确的,并且已经正确地注入到您的应用程序中。
  2. 认证数据库
    • 确保您在创建用户时指定的认证数据库与 authentication_source 参数中的值匹配。
  3. 错误日志
    • 查看应用程序的日志文件,以获取关于认证失败的更多详细信息。这可能会提供解决问题所需的线索。
  4. MongoDB服务器配置
    • 确保MongoDB服务器已经启用认证,并且配置了正确的用户和角色。
  5. 客户端驱动版本
    • 确保您使用的 mongoengine 版本与MongoDB服务器版本兼容。
  6. 连接字符串格式
    • 如果您使用的是连接字符串,确保格式正确,并且包含了所有必要的参数。
      如果您的配置看起来是正确的,但是仍然遇到问题,您可能需要检查MongoDB服务器的日志,以查看是否有关于认证失败的更详细的错误信息。此外,您还可以尝试使用MongoDB客户端(如 mongo shell)以相同的凭据手动连接,以验证是否能够成功连接。如果手动连接成功,那么问题可能出在您的应用程序配置或代码中。如果手动连接也失败,那么问题可能出在MongoDB服务器的配置或用户账户上。

更多内容,欢迎关注微信公众号:DZSpace

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DZSpace

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值