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
    • 最新
    • 标签
主页 / server / 问题 / 105612
Accepted
Nathan Osman
Nathan Osman
Asked: 2010-01-23 23:21:55 +0800 CST2010-01-23 23:21:55 +0800 CST 2010-01-23 23:21:55 +0800 CST

如何使用 MySQL 复制用户权限?

  • 772

我有一个 MySQL 安装,其中包含许多数据库和用户,我需要迁移到新的 MySQL 安装。我可以使用 phpMyAdmin 导出然后导入数据库/表,但我不知道有什么可以移动用户和权限。我怎样才能轻松做到这一点?

mysql permissions
  • 3 3 个回答
  • 39594 Views

3 个回答

  • Voted
  1. Best Answer
    Zoredache
    2010-01-24T00:58:25+08:002010-01-24T00:58:25+08:00

    像这样的脚本将使用 mysql cli 客户端打印出一系列您需要用来重新创建用户帐户的授权语句。如果您将数据库凭据存储在 .my.cnf 中,此命令效果最佳

    #!/bin/bash
    # adapted from (http://www.pyrosoft.co.uk/blog/2006/10/18/show-grants-for-all-users-on-mysql/)
    (
     mysql --batch --skip-column-names -e "SELECT user, host FROM user" mysql 
    ) | while read user host
    do
      echo "# $user @ $host"
      mysql --batch --skip-column-names -e"SHOW GRANTS FOR '$user'@'$host'"
    done
    

    如果您从一个版本的 mysql 跳转到另一个版本,您可能想要使用它而不是简单地转储 mysql 数据库。mysql 数据库的架构偶尔会更新。

    这也将允许您选择要重新创建的帐户,如果您想消除一些杂乱无章的东西。


    我最近在一个名称中包含空格的用户上使用它,这很困惑read,因为 IFS 默认情况下包含空格字符作为分隔符。我的新命令和改进命令,似乎在系统奇怪的用户名上效果更好。

    IFS=$'\t'; while read user host; do
      echo "user:$user host:$host"
      mysql --batch --skip-column-names -e"SHOW GRANTS FOR '$user'@'$host'"
      echo ""
    done < <(mysql --batch --skip-column-names -e "SELECT user, host FROM mysql.user")
    
    • 18
  2. RolandoMySQLDBA
    2013-08-08T19:09:58+08:002013-08-08T19:09:58+08:00

    这将为每个用户创建一个SHOW GRANTS;文件。

    然后,回显每个用户的SHOW GRANTS;并在每一行附加一个分号。

    MYSQL_CONN="-uroot -prootpassword"
    SQLSTMT="SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';')"
    SQLSTMT="${SQLSTMT} FROM mysql.user WHERE user<>''"
    mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" > /tmp/ShowGrants.sql
    mysql ${MYSQL_CONN} -ANe < /tmp/ShowGrants.sql | sed 's/$/;/g' > MySQLUserGrants.sql
    rm -f /tmp/ShowGrants.sql
    

    您还可以下载并使用这些工具来做同样的事情:

    • pt-show-grants
    • mk-show-赠款

    试试看 !!!

    • 4
  3. pkaeding
    2010-01-23T23:41:14+08:002010-01-23T23:41:14+08:00

    我相信您应该能够通过备份和恢复mysql数据库来迁移这些数据。

    • 3

相关问题

  • 从 MySQL 迁移到 SQL Server 的最佳方法或工具

  • 您如何跟踪和调试 mySQL 性能问题?

  • 在 Linux Xen VPS 上优化 Apache 和 MySQL

  • 如何选择 MySQL 数据库引擎

  • 如何授予对 Exchange 2007 中每个人的日历的访问权限?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve