我正在尝试运行一个init.sql
脚本(包括数据库创建,过程创建,表创建,数据插入),如下所示:
mysql.exe -u root -p <password> <my_db> < init.sql
。但是不知道为什么在调用此行之后它会显示如下输出,而数据库什么也没发生?!
Windows 10(1809)
8.0.17
适用于x86_64上Win64的MySQL Ver 8.0.17(MySQL Community Server-GPL) 版权所有(c)2000、2019,Oracle和/或其分支机构。保留所有权利 保留。
Oracle是Oracle Corporation和/或其Oracle的注册商标。 会员。其他名称可能是其各自所有者的商标。
用法:mysql [OPTIONS] [数据库]-?, --help显示此 帮助并退出。 -I,--help是-的同义词? --auto-rehash
启用自动重新哈希处理。一个人不需要使用 “重新哈希”以完成表和字段,但启动 并且重新连接可能需要更长的时间。禁用 -禁用自动重新哈希。 (默认为on;使用--skip-auto-rehash禁用。)-A,--no-auto-rehash 没有自动重新哈希。一个人必须使用“重新哈希”来获得 表和字段完成。这样可以更快地开始 mysql并在重新连接时禁用重新哈希。 -自动垂直输出 如果出现以下情况,则自动切换到垂直输出模式 结果比端子宽度宽。 -B,--batch不使用历史文件。禁用交互行为。 (启用--silent。)--bind-address = name绑定到的IP地址。 --binary-as-hex将二进制数据打印为十六进制
--character-sets-dir =名称 字符集文件的目录。 --column-type-info显示列类型信息。 -c,--comments保留注释。将评论发送到服务器。的 默认为--skip-comments(放弃评论),启用 与--comments。 -C,--compress在服务器/客户端协议中使用压缩。 -#,--debug [=#]这是一个 非调试版本。赶上并退出。 --debug-check这是 非调试版本。赶上并退出。 -T,--debug-info此 是非调试版本。赶上并退出。 -D,--database =名称 要使用的数据库。 --default-character-set =名称 设置默认字符集。 --delimiter = name要使用的分隔符。 --enable-cleartext-plugin 启用/禁用明文身份验证插件。 -e,--execute = name执行命令并退出。 (禁用 -力量与历史 -E,--vertical垂直打印查询(行)的输出。 -f,--force即使我们继续 得到一个SQL错误。 --histignore = name冒号分隔的列表 保留陈述的模式 从登录到syslog和mysql历史记录。 -G,--named-commands 启用命名命令。命名命令表示该程序的 内部命令;参见mysql> help。启用后, 命名命令可以在查询的任何行中使用, 否则只能从第一行开始输入。 使用--disable-named-commands禁用。这个选项是 默认禁用。 -i,--ignore-spaces忽略函数名称后的空格。 --init-command = name SQL命令 连接到MySQL服务器时执行。 重新连接时将自动重新执行。 --local-infile启用/禁用本地加载数据 INFILE。 -b,--no-beep关闭错误提示音。 -H, --host = name连接到主机。 -H,--html生成HTML输出。 -X,--xml生成XML输出。 --line-numbers
输入行号以查找错误。 (默认为on;使用--skip-line-numbers禁用。)-L,--skip-line-numbers 不要为错误写行号。 -n,--unbuffered每次查询后刷新缓冲区。 --column-names在结果中写入列名。 (默认为on;使用--skip-column-names禁用。)-N,--skip-column-names 不要在结果中写列名。 --sigint-ignore忽略SIGINT(CTRL-C)。 -o,--one-database忽略语句,但在 默认数据库是在命令行中命名的数据库。 -p,--password [= name] 连接服务器时使用的密码。如果密码是 tty没给它。 -W,--pipe使用命名管道连接到服务器。 -P,--port =#端口 用于连接的数字,或默认为0的in 优先顺序my.cnf,$ MYSQL_TCP_PORT, / etc / services,内置默认值(3306)。 --prompt = name设置mysql提示符为该值。 --protocol = name用于连接的协议(TCP,套接字,管道, 记忆)。 -q,--quick不缓存结果,逐行打印。这可能会变慢 如果输出被挂起,请关闭服务器。不使用 历史记录文件。 -r,--raw无需转换即可写入字段。与--batch一起使用。 --reconnect重新连接 如果连接断开。禁用 --disable-reconnect。默认情况下启用此选项。 (默认为on;使用--skip-reconnect禁用。)-s,--silent保持沉默。列印结果 标签作为分隔符, 新行中的每一行。 --shared-memory-base-name =名称 共享内存的基本名称。 -S,--socket = name用于连接的套接字文件。 --server-public-key-path =名称 服务器公共RSA密钥(PEM格式)的文件路径。 --get-server-public-key 获取服务器公共密钥--ssl-mode = name SSL连接模式。 --ssl-ca = name PEM格式的CA文件。
--ssl-capath =名称CA目录。 --ssl-cert = name PEM格式的X509证书。 --ssl-cipher = name要使用的SSL密码。 --ssl-key =名称 X509密钥为PEM格式。 --ssl-crl =名称证书吊销 清单。 --ssl-crlpath = name证书吊销列表路径。
--tls-version = name要使用的TLS版本,允许的值为:TLSv1,TLSv1.1, TLSv1.2,TLSv1.3 --ssl-fips-mode = name SSL FIPS模式(仅适用于OpenSSL);允许的 值是:OFF,ON,STRICT --tls-ciphersuites = name 使用TLS v1.3密码。 -t,--table以表格式输出。 --tee = name将所有内容附加到 超出档案。查看交互式帮助(\ h) 也。在批处理模式下不起作用。禁用 --disable-tee。默认情况下禁用此选项。 -u,--user = name如果不是当前用户,则为登录用户。
-U,--safe-updates仅允许使用键的UPDATE和DELETE。 -U,-i-am-a-dummy选项--safe-updates,-U的同义词。 -v,--verbose写更多。 (-v -v -v给出表的输出格式)。 -V,--version 输出版本信息并退出。 -w,--wait等待并 如果连接断开,请重试。 --connect-timeout =#秒数 连接超时之前。 --max-allowed-packet =# 要发送或接收的最大数据包长度 服务器。 --net-buffer-length =# TCP / IP和套接字通信的缓冲区大小。 --select-limit =#SELECT的自动限制 使用--safe-updates。 --max-join-size =#行的自动限制 在使用时加入 -安全更新。 --show-warnings在每个语句后显示警告。 -j,-syslog日志过滤 交互命令到系统日志。过滤 命令取决于histignore提供的模式 默认模式之外的其他选项。 --plugin-dir = name客户端插件的目录。 --default-auth = name要使用的默认身份验证客户端插件。 --binary-mode默认情况下,不允许ASCII'\ 0',而'\ r \ n' 转换为“ \ n”。此开关将同时关闭这两个功能, 并关闭所有客户端命令的解析,除了 \ C和DELIMITER,在非交互模式下(用于输入 通过管道传输到mysql或使用“源”命令加载)。 处理mysqlbinlog的输出时这是必要的 可能包含斑点。 --connect-expired-password 通知服务器此客户端已准备好处理 密码沙箱模式已过期。从以下文件中以给定顺序读取默认选项: C:\ WINDOWS \ my.ini C:\ WINDOWS \ my.cnf C:\ my.ini C:\ my.cnf C:\ Program Files \ MySQL \ my.ini C:\ Program Files \ MySQL \ my.cnf以下组 读取:mysql client以下选项可以作为第一个选项 参数: --print-defaults打印程序参数列表并退出。 --no-defaults不从任何选项文件中读取默认选项, 登录文件除外。 --defaults-file =#仅从给定文件#中读取默认选项。 --defaults-extra-file =#在读取全局文件后读取此文件。 --defaults-group-suffix =# 还读取带有concat的组(组,后缀) --login-path =#从登录文件读取此路径。
变量(--variable-name = value)和布尔选项{FALSE | TRUE} 值(读取选项后) --------------------------------- ----------------- -----------------------自动重新哈希TRUE自动垂直输出FALSE绑定地址
(无默认值)binary-as-hex(FALSE) character-sets-dir(无默认值)column-type-info FALSE评论FALSE压缩
FALSE数据库(无默认值) 默认字符集自动定界符
; enable-cleartext-plugin FALSE垂直
FALSE强制FALSE历史信息
(无默认值)named-commands FALSE 忽略空间FALSE初始化命令
(无默认值)本地文件内FALSE无提示
FALSE主机(无默认值)html
FALSE xml FALSE行号
TRUE无缓冲FALSE列名
TRUE sigint-ignore FALSE端口
0提示mysql> quick
FALSE原始FALSE重新连接
FALSE共享内存库名称(无默认值)套接字
(无默认值)server-public-key-path(无默认值) 值)获取服务器公共密钥FALSE ssl-ca
(无默认值)ssl-capath(无默认值 值)ssl-cert(无默认值)ssl-cipher (无默认值)ssl键(无默认值 值)ssl-crl(无默认值) ssl-crlpath(无默认值)tls-version
(无默认值)tls-ciphersuites(无默认值 值)表FALSE用户
root安全更新FALSE i-am-a-dummy
FALSE连接超时0个最大允许数据包
16777216网络缓冲区长度16384选择限制
1000个最大连接大小1000000个显示警告
FALSE plugin-dir(无默认值) default-auth(无默认值)二进制模式
FALSE connect-expired-password FALSE
答案 0 :(得分:1)
我建议按照MySQL8.0文档进行操作。尝试完全合格-用户和-密码,如下所示:
shell> mysql --user=user_name --password=pass db_name
答案 1 :(得分:1)
您显示的输出是mysql客户端的帮助输出。它根本没有运行您的init.sql脚本。没那么远,因为它不理解您调用客户端的命令。
我不使用Windows,但我知道<
输入重定向在Powershell中不起作用。您可以使用其他方式运行SQL脚本,而无需使用输入重定向:
mysql ...options... -e "source init.sql"
另外,您应该了解,如果-p
与密码之间有空格,则mysql客户端的-p
选项将不起作用。
使用以下任一方法:
mysql -p<password> ...
或者:
mysql --password=<password> ...
但是我的首选是完全避免在命令行上输入用户名和密码。将它们放在选项文件中,如下所述:https://dev.mysql.com/doc/refman/8.0/en/option-files.html