当前位置: 首页 > 知识库问答 >
问题:

如何导出和导入现有用户(与它的特权!)

奚高扬
2023-03-14

我有一个现有的MySQL实例(测试),包含2个数据库和几个用户,每个用户对每个数据库都有不同的访问权限。

我现在需要复制其中一个数据库(进入生产)和与之关联的用户。

复制数据库很容易:

导出:

mysqldump --no-data --tables -u root -p secondb >> secondb_schema.sql

导入:

mysql -u root -p -h localhost secondb < secondb_schema.sql

然而,我没有找到从命令行导出和导入用户的简单方法(无论是在mysql内部还是外部)。

更新:到目前为止,我已经找到了完成此操作的手动(因此容易出错)步骤:

-- lists all users
select user,host from mysql.user;

然后查找其赠款:

-- find privilege granted to a particular user
show grants for 'root'@'localhost'; 

然后使用上面的“show grants”命令的结果中列出的授权手动创建用户。

我更喜欢更安全、更自动化的方式。有吗?

共有1个答案

郎弘壮
2023-03-14

我发现的导出用户的最简单的方法之一是使用Percona的工具pt-show-grants。Percona工具包是免费的,易于安装和使用,并有大量的文档。这是一种显示所有用户或特定用户的简单方法。它以SQL格式列出了它们的所有授权和输出。我将给出一个示例,说明如何显示test_user的所有授权:

shell> pt-show-grants --only test_user

该命令输出示例:

GRANT USAGE ON *.* TO 'test_user'@'%' IDENTIFIED BY PASSWORD '*06406C868B12689643D7E55E8EB2FE82B4A6F5F4';
GRANT ALTER, INSERT, LOCK TABLES, SELECT, UPDATE ON `test`.* TO 'test_user'@'%';

我通常将输出重置到一个文件中,这样我就可以编辑我需要的内容,或者将其加载到MySQL中。

或者,如果您不想使用Percona工具,而想要对所有用户进行转储,那么您可以以以下方式使用mysqldump:

shell> mysqldump mysql --tables user db > users.sql

注意:--flush-privileges不能使用这个功能,因为整个数据库没有被转储。这意味着您需要手动运行它。

shell> mysql -e "FLUSH PRIVILEGES"
 类似资料:
  • 如何通过查询导入和导出.sql文件。在jdbc中使用的注意事项

  • 导出(export)和导入(import)指令有几种语法变体。 在上一节,我们看到了一个简单的用法,现在让我们来探索更多示例吧。 在声明前导出 我们可以通过在声明之前放置 export 来标记任意声明为导出,无论声明的是变量,函数还是类都可以。 例如,这里的所有导出均有效: // 导出数组 export let months = ['Jan', 'Feb', 'Mar','Apr', 'Aug',

  • 导出和导入容器 导出容器 如果要导出本地某个容器,可以使用 docker export 命令。 $ docker container ls -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NA

  • 我必须使用SSIS从数据库导出CSV文件 这很容易做到,但当我必须将同一个CSV文件导入另一个数据库(从另一台服务器)时,问题就来了,因为我有两列,其中包含以下字符:逗号(,)、撇号(')、分号(;),冒号(:),竖线(|)。我不知道哪个应该是平面文件连接的设置,哪个应该是标题行分隔符、行分隔符、列分隔符。。。以便执行这两个操作(导出,然后导入)。 我尝试了许多组合,但我仍然得到错误,如: [平面

  • 本文向大家介绍docker镜像的导入和导出的实现,包括了docker镜像的导入和导出的实现的使用技巧和注意事项,需要的朋友参考一下 gitlab 的docker使用 gitlab docker 启动命令 将容器修改提交到镜像 镜像的导入和导出 export 和improt save 和load (像当与镜像的备份和恢复) Dockerfile 构建的时候打个标签 构建实例 将flask应用 打包的

  • 问题内容: 我在玩和使用和。我想在不同的文件中构建多个组件,将其导入单个文件并将其捆绑在一起 假设我有几个这样的组件: my-navbar.jsx main-page.jsx 使用webpack并按照其教程进行操作,我有: 构建项目并运行它之后,在浏览器控制台中出现以下错误: 我究竟做错了什么?如何正确导入和导出组件? 问题答案: 尝试 默认设置 组件中的导出: 通过使用默认值,您表示将成为该模块