【问题标题】:Running/Starting MySQL without installation on Windows在 Windows 上运行/启动 MySQL 而无需安装
【发布时间】:2017-06-22 01:53:47
【问题描述】:

通常,我会下载适用于 Windows 的 MySQL msi 安装程序并安装,然后在安装步骤中配置和创建数据库。然后使用任何应用程序/语言进行连接,然后从那里开始。

然而
我想在不使用 msi 安装程序的情况下达到相同的结果,而是想使用提供的 MySQL 存档。 所以,

  • 我已下载 (MySQL Community Server => Windows (x86, 64-bit), ZIP 存档 mysql-5.7.17-winx64.zip)
  • 已提取存档。

我想知道如何通过 windows 命令行使用下载的服务器文件创建和管理数据库。

大多数搜索尝试产生的结果要么假设已安装 msi,要么对于仍在尝试学习 MySQL 基础知识的人来说过于复杂。

TL;DR:如何通过命令行在 Windows 上使用 MySQL 服务器存档文件创建和管理数据库?

【问题讨论】:

标签: mysql windows command-line


【解决方案1】:

上面的答案已经过时了,而且提供的信息太多,可能会造成混淆。

对于只想在 Windows 上尽快运行数据库的 8.0.26+ 版本用户,这些是更加简化的步骤:

  1. 将主存档解压缩到所需的安装目录(C:\mysql 是安全的默认选择)

  2. 初始化数据目录。最近的 mysql 发行版不包含它。转到 C:\mysql\bin 并输入:

    mysqld --initialize --console

并保存该行的密码:

2021-11-03T21:33:13.455063Z 6 [注意] [MY-010454] [服务器] 临时 为 root@localhost 生成密码:yIQ_4Ra2Q9g)

  1. 从 bin 目录运行 db

    mysqld --console

  2. 更改分配的随机密码。打开单独的cmd窗口并连接

    mysql -u root -p

输入第3点的临时密码。'root'是默认的mysql用户名。然后输入:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';

“root-password”应替换为您自己的密码。

您现在可以再次尝试 mysql -u root -p 以检查新密码是否有效,或者只是连接任何其他客户端。

我通常遵循HERE 所述的步骤,但并非所有内容都一致。

【讨论】:

    【解决方案2】:

    感谢Ryan Vincent 的comment。我能够按照 MySQL 参考文档中的步骤进行操作(出于某种原因,我在提出这个问题之前的搜索从未找到它)。

    Reference Documentation : 2.3.5 Installing MySQL on Microsoft Windows Using a noinstall Zip Archive

    简化步骤

    1. 下载MySQL Community Server 5.7.17 Windows (x86, 64-bit), ZIP Archive

    2. 将下载的 MySQL 服务器存档解压缩到 MySQL 服务器文件的所需位置(例如:D:\mysql\mysql-5.7.17-winx64)

    3. 为 MySQL 数据库的数据文件创建一个目录(例如:D:\mysql\mydb)

    4. 为 MySQL 的数据库日志创建一个目录(例如 D:\mysql\logs)

    5. 创建 MySQL 选项文件(示例位置:D:\mysql\config.ini)

      # For advice on how to change settings please see
      # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
      
      [mysqld]
      
      # Remove leading # and set to the amount of RAM for the most important data
      # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
      # innodb_buffer_pool_size = 128M
      
      # Remove leading # to turn on a very important data integrity option: logging
      # changes to the binary log between backups.
      # log_bin
      
      # These are commonly set, remove the # and set as required.
      # basedir = .....
      # datadir = .....
      # port = .....
      # server_id = .....
      
      
      # Remove leading # to set options mainly useful for reporting servers.
      # The server defaults are faster for transactions and fast SELECTs.
      # Adjust sizes as needed, experiment to find the optimal values.
      # join_buffer_size = 128M
      # sort_buffer_size = 2M
      # read_rnd_buffer_size = 2M 
      
      sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
      # set basedir to your installation path
      basedir = "D:\\mysql\\mysql-5.7.17-winx64"
      # set datadir to the location of your data directory
      datadir = "D:\\mysql\\mydb"
      # The port number to use when listening for TCP/IP connections. On Unix and Unix-like systems, the port number must be
      # 1024 or higher unless the server is started by the root system user.
      port = "55555"
      # Log errors and startup messages to this file.
      log-error = "D:\\mysql\\logs\\error_log.err"
      
      [mysqladmin]
      
      user = "root"
      port = "55555"
      
      • 选择的端口是 55555
      • [mysqld] 对mysqld.exe 相关的选项进行分组,当mysql.exe 读取此配置文件时将使用这些选项。
      • [mysqladmin] 将与mysqladmin.exe 相关的选项分组,当mysqladmin.exe 读取此配置文件时将使用这些选项。
    6. 使用 Windows 批处理文件/命令提示符初始化 MySQL 数据库文件 (如果出现错误,您可能需要C++ redistribute)

      "D:\mysql\mysql-5.7.17-winx64\bin\mysqld.exe" --defaults-file="D:\\mysql\\config.ini" --initialize-insecure --console
      
    • 这将在配置文件中指定的位置创建一个数据库文件。
      • 它将有没有密码的root用户
      • 错误消息将打印在当前控制台窗口中。
    1. 创建一个批处理文件来启动 MySQL 数据库服务器

      "D:\mysql\mysql-5.7.17-winx64\bin\mysqld.exe" --defaults-file="D:\\mysql\\config.ini"
      
      • 这将读取配置文件 (D:\mysql\config.ini) 的 [mysqld] 部分/组,并使用其中指定的选项来启动 MySQL 数据库服务器。
    2. 创建一个批处理文件来关闭 MySQL 数据库服务器

      "D:\mysql\mysql-5.7.17-winx64\bin\mysqladmin.exe" --defaults-file="D:\\mysql\\config.ini" shutdown
      
      • 这将读取配置文件 (D:\mysql\config.ini) 的 [mysqladmin] 部分/组,并使用其中指定的选项来指定和关闭 MySQL 数据库服务器。
    3. 您现在可以启动数据库并访问它,并在不需要时将其关闭。

    免责声明 这些步骤应该可以帮助您开始使用 MySQL 数据库,但绝不是为了生产而设计的或安全的。(root 用户甚至还没有设置密码)

    资源和更多详情

    1. Reference Documentation : 2.3.5 Installing MySQL on Microsoft Windows Using a noinstall Zip Archive
    2. Reference Documentation : 5.2.6 Using Option Files
    3. Reference Documentation : 5.2.3 Specifying Program Options
    4. Reference Documentation : 6.1.4 Server Command Options
    5. [Additional] Reference Documentation : 5.6 Running Multiple MySQL Instances on One Machine
    6. Steps to change root password

    【讨论】:

    • 我收到以下错误:“mysqld:无法创建或访问 MySQL 应用程序登录到 Windows 事件日志所需的注册表项。以足够的权限运行应用程序一次以创建密钥,添加手动输入密钥,或关闭该应用程序的日志记录。”
    • 这里的问题与@crash springfield 相同
    • 很棒的帖子。只是想知道 - 使用二进制文件而不是经典的 Windows 安装程序是否会对性能产生影响?
    • 还要在config.ini中添加这一行以避免mysql工作台和python中的caching_sha2_password等问题default_authentication_plugin=mysql_native_password
    • 很好的解决方案。在我使用 Catalina 和 MySQL 8.0 的 Mac 上也能正常工作。您只需要调整路径(用 / 替换 \)并省略“.exe” :-)
    【解决方案3】:

    除了 Sero 的回答,如果你在这个 link 之后更改 root 密码,请使用以下命令通过指定密码来启动、停止和连接到服务器

    1. change password
        .\bin\mysql -P 55555 -u root --skip-password
        ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';
    
    2. stop mysql server
        .\bin\mysqladmin --defaults-file=.\config.ini -u root --password=root123 shutdown 
    
    3. start mysql server
        .\bin\mysqld.exe --defaults-file=.\config.ini
    
    4. connecting to mysql
        .\bin\mysql -P 55555 -u root --password=root123
    

    注意:如果只在命令中指定 --password 参数而不指定密码,则会在终端提示输入密码。

    【讨论】:

      【解决方案4】:

      除此之外,如果您遇到“mysqld:无法创建或访问 MySQL 应用程序登录 Windows EventLog 所需的注册表项。以足够的权限运行应用程序一次以创建密钥,添加密钥手动,或关闭该应用程序的日志记录。”错误 - 在步骤 6、7 中添加以下行: --log_syslog=0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-21
        • 2017-07-16
        • 2018-01-18
        • 1970-01-01
        • 2019-08-02
        • 2016-02-10
        • 2015-07-28
        • 1970-01-01
        相关资源
        最近更新 更多