AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 526
Accepted
xenoterracide
xenoterracide
Asked: 2011-01-12 03:15:50 +0800 CST2011-01-12 03:15:50 +0800 CST 2011-01-12 03:15:50 +0800 CST

你能在 MySQL 中“su -”吗?

  • 772

如果我在 mysql 数据库上有 root 权限,并且我想放弃普通用户的权限,而不使用他们的密码,我可以这样做吗?如果是这样怎么办?想想# su - usernameunix。基本上,我只是想避免需要他们的密码才能成为他们,所以我可以在他们的用户身上测试他们的权限。在 postgres 中,我可以简单地允许对系统 root 用户进行身份验证,以绕过密码验证。我需要这样做的原因是能够通过成为用户来重现用户问题,而不是他们将无法准确重现。我当然可以询问他们的密码,但绕过它需要更多时间。

mysql permissions
  • 4 4 个回答
  • 2760 Views

4 个回答

  • Voted
  1. Best Answer
    Joe
    2011-01-12T14:28:26+08:002011-01-12T14:28:26+08:00

    我刚刚意识到——只要你不介意在登录时锁定用户——

    1. 备份 mysql.user 表(至少,用户的哈希密码)
    2. 将他们的密码设置为您知道的密码:UPDATE mysql.user SET password=PASSWORD('new password') WHERE user='username' AND host='hostname';
    3. 以他们的身份登录
    4. 将他们的密码设置回原来的密码:UPDATE mysql.user SET password='saved password hash' WHERE user='username' AND host='hostname';

    flush privileges;...在操作 mysql.user 表之后,您可能需要这样做。

    • 4
  2. Derek Downey
    2011-08-17T17:36:00+08:002011-08-17T17:36:00+08:00

    从 MySQL 5.5.7 开始,可以模拟用户,引入Proxy Users。我以前从未这样做过,所以我使用test authentication plugin进行了尝试,因为似乎代理用户只能在启用身份验证插件的情况下工作。这是我采取的步骤。

    以 root 身份执行的第一步:

    • mysql> INSTALL PLUGIN test_plugin_server SONAME 'auth_test_plugin.so';

    • mysql> SHOW PLUGINS; 在此处输入图像描述

    • 创建要模拟的用户(在您的情况下它已经存在):

      mysql> GRANT ALL PRIVILEGES ON dtest@本地主机 IDENTIFIED BY 'mypass';

    • 创建“代理”用户:

      mysql> CREATE USER proxy@localhost IDENTIFIED WITH test_plugin_server AS 'dtest';

    • mysql> GRANT PROXY ON dtest@localhost TO proxy@localhost;

    • mysql> FLUSH PRIVILEGES;

    现在,尝试使用用户登录proxy,密码:(dtest代理用户的“AS”变量):

    • $ mysql -uproxy -pdtest

    • mysql> SELECT USER(), CURRENT_USER();

      在此处输入图像描述

    • mysql> SHOW GRANTS; 在此处输入图像描述

    • 3
  3. malhal
    2020-01-04T03:07:20+08:002020-01-04T03:07:20+08:00

    现在 MySQL 没有 root 密码,而是使用auth_socket插件来验证连接到套接字的用户是系统的 root 用户。如果您可以为所有用户使用 unix 帐户,您可以使用相同的技术来解决您的问题,这会带来各种可能性,例如简单的二进制文件存储!

    首先,您将为用户添加一个 unix 帐户:

    root: adduser testuser

    然后添加一个匹配的 MySQL 用户(可以在adduser.local 脚本中自动完成):

    CREATE USER 'testuser'@'localhost' IDENTIFIED WITH auth_socket;

    现在切换到用户(以root身份完成时不需要密码):

    root: su testuser

    以用户身份连接到 MySQL(不需要密码,因为您以该用户身份登录):

    testuser: mysql -u $USER(或 -you testuser 而不是使用环境变量)

    最好提供-uuser 参数,因为 mysql 客户端自动用户便利例程不擅长自行解决,例如,如果您从一个用户到另一个用户帐户,它出于某种原因使用第一个用户。

    • 2
  4. Joe
    2011-01-12T04:23:13+08:002011-01-12T04:23:13+08:00

    我不知道复制等价物的具体方法su,但是,您不需要他们的密码——由于 mysql 处理身份验证的方式,您可以从每台机器设置不同的密码(或根本没有密码)那是从登录的。

    • 1

相关问题

  • 是否有任何 MySQL 基准测试工具?[关闭]

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve