【问题标题】:How to create a database from shell command?如何从 shell 命令创建数据库?
【发布时间】:2011-01-26 13:42:09
【问题描述】:

我正在寻找类似 PostgreSQL 中的 createdb 或任何其他允许我在 shell 命令的帮助下创建数据库的解决方案。有什么提示吗?

【问题讨论】:

    标签: mysql shell command-line


    【解决方案1】:

    你是说mysql环境吗?

    create database testdb;
    

    或者直接从命令行:

    mysql -u root -e "create database testdb"; 
    

    【讨论】:

    • mysql -u root -e "创建数据库testdb";这就是我要找的:) 谢谢
    • 如果您有密码,只需添加 -p。按下回车后,系统会询问您的密码。以下是使用我的用户的示例,它是 root(如果您有另一个用户名,请更改它),它还使用数据库的名称“oc_local”(如果您希望以不同的方式调用数据库,请更改它)-- ----> mysql -u root -p -e "创建数据库 oc_local";
    • 嗨@koszikot——如果这是你要找的,你应该接受它作为正确答案:-)
    • 我想知道命令行选项的作用,对其他人来说 -e 是 --execute=statement 的缩写。在此处查找命令行选项dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html
    • 分号应该在引号内
    【解决方案2】:
    cat filename.sql | mysql -u username -p # type mysql password when asked for it
    

    filename.sql 包含用于创建数据库的所有 sql。或者……

    echo "create database `database-name`" | mysql -u username -p
    

    如果你真的只想创建一个数据库。

    【讨论】:

    • 我在第 27 行收到此错误 ERROR 1046 (3D000):运行 echo "create database databasename" | 时未选择数据库mysql -u -u 用户名 -p 命令
    • @keerthi:也许您的用户没有任何现有架构的权限?
    • 这是因为有两个-u标志
    • @Kris 我可以从终端读取数据库名称并在创建数据库中使用变量值作为数据库名称。
    • @Clifford:您可以使用普通的 shell 参数使用简单的 (ba)sh 脚本。 (stackoverflow.com/questions/23563043/shell-script-arguments) 可能值得提出自己的问题。
    【解决方案3】:

    如果您创建一个新数据库,最好创建仅对该数据库具有权限的用户(如果出现任何问题,您不会损害 root 用户登录名和密码)。所以所有的东西都会看起来像这样:

    mysql -u base_user -pbase_user_pass -e "create database new_db; GRANT ALL PRIVILEGES ON new_db.* TO new_db_user@localhost IDENTIFIED BY 'new_db_user_pass'"
    

    其中:
    base_user 是具有所有权限的用户名(可能是 root)
    base_user_pass 这是 base_user 的密码(中间没有空格-p 和 base_user_pass 很重要)
    new_db 是新创建数据库的名称
    new_db_user 是新用户的名称,只能访问 new_db
    new_db_user_pass 这是 new_db_user 的密码

    【讨论】:

    • 大量。刚刚在 dashdocs sn-ps 中添加了这个很棒的内衬。如果有人有带空格的 root 密码:-p"root password here" 工作正常
    【解决方案4】:
    mysqladmin -u$USER -p$PASSWORD create $DB_NAME
    

    替换上面的变量,你就可以使用这个 oneliner。 $USER 是用户名,$PASSWORD 是密码,$DB_NAME 是数据库名称。

    【讨论】:

    • 多年后回到这个问题并注意到我赞成它:D
    • 我会一直回到这里...
    【解决方案5】:

    使用

    $ mysqladmin -u <db_user_name> -p create <db_name>
    

    系统将提示您输入密码。还要确保您使用的 mysql 用户具有创建数据库的权限。

    【讨论】:

      【解决方案6】:

      第一个和第二个答案很好,但是如果有人正在寻找一个脚本或者如果你想要动态的,即(变量中的数据库/用户名/密码),那么在这里:

      #!/bin/bash
      
      
      
      DB="mydb"
      USER="user1"
      PASS="pass_bla"
      
      mysql -uroot -prootpassword -e "CREATE DATABASE $DB CHARACTER SET utf8 COLLATE utf8_general_ci";
      mysql -uroot -prootpassword -e "CREATE USER $USER@'127.0.0.1' IDENTIFIED BY '$PASS'";
      mysql -uroot -prootpassword -e "GRANT SELECT, INSERT, UPDATE ON $DB.* TO '$USER'@'127.0.0.1'";
      

      【讨论】:

      • 如果您包含任何.,这将失败
      【解决方案7】:

      你可以在命令行使用SQL

      echo 'CREATE DATABASE dbname;' | mysql <...>
      

      或者你可以使用mysqladmin:

      mysqladmin create dbname
      

      【讨论】:

        【解决方案8】:

        使用基本用户连接到数据库: mysql -u base_user -pbase_user_pass 并执行 CREATE DATABASE、CREATE USER 和 GRANT PRIVILEGES 语句。

        这是一个方便的网络向导,可帮助您进行陈述 www.bugaco.com/helpers/create_database.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-21
          • 1970-01-01
          • 2020-12-16
          • 2012-03-31
          相关资源
          最近更新 更多