這是歷史版本頁面 — 看 MySQL (32-bit) 最新版本
裝了 MySQL 之後不知道怎麼開始?它能做什麼、該不該用
你剛把 MySQL 裝好,打開黑色的命令提示字元視窗,輸入指令後卻不確定下一步要做什麼。或者你正在架一個網站、寫一支小程式,需要一個地方存放資料,聽別人說「用 MySQL 就好」,但你真的打開它之後,才發現跟想像中完全不一樣——沒有漂亮的視窗介面,只有一行一行的文字指令,你甚至不知道該從哪個指令開始。
一般人遇到這種狀況,直覺是去裝一個圖形介面工具,或是上網找教學影片。但問題往往不是「不會操作」,而是「不確定 MySQL 到底能幫你做到什麼程度」。它不像一般應用程式打開就能用,它是一套資料庫伺服器,需要你先理解「資料庫」的概念,才知道怎麼讓它為你工作。這類工具的核心切入點,是讓你把資料有結構地存起來、隨時查得回來,而不是像 Excel 那樣手動管理。
01MySQL 到底是做什麼用的?
它是一套關聯式資料庫管理系統,用來存放、管理、查詢資料。你可以把它想成一個「有結構的倉庫」——先把資料依照表格、欄位、關聯的方式規劃好,之後用 SQL 指令把資料寫進去或讀出來。網站會員資料、訂單紀錄、文章內容,這類需要頻繁讀寫的資料,都適合交給它處理。
02這套軟體一定要用指令操作嗎?
它本身主要透過命令提示字元操作,沒有內建圖形介面。但官方文件提到,可以搭配 phpMyAdmin、MySQL Workbench、Navicat 這些第三方工具,用滑鼠點一點就能建立表格、執行查詢、看效能狀態。如果你不習慣打指令,裝一個圖形工具會比較好上手。
03我原本用別的資料庫,可以把資料搬過來嗎?
官方說明指出,它提供工具和公用程式,可以從 Oracle、SQL Server、PostgreSQL 這些其他資料庫系統遷移過來。不過實際遷移的過程會牽涉到資料型別轉換、編碼設定等細節,建議先找官方文件確認支援的版本和步驟,再動手轉移。
04它支援寫入複雜的邏輯嗎?例如自動計算或觸發事件?
支援。官方文件明確列出它支援預存程序、觸發器和函數,意思是你可以把一段常用的 SQL 邏輯存起來重複呼叫,也可以在特定事件發生時自動執行某段程式。這對需要自動化處理資料的應用程式來說,是很常用的功能。
05資料放進去之後,要怎麼防止別人亂看?
它提供使用者認證、存取控制和加密機制。你可以建立不同的使用者帳號,分別設定他們能看哪些資料庫、能執行哪些操作,也可以啟用加密來保護傳輸中的資料。不過這些都需要你自己去設定,預設狀態下並不會自動幫你做好完整的權限控管。
06我完全沒寫過程式,適合用這套軟體嗎?
官方文件提到,要有效使用 MySQL,需要具備 SQL 語言的基本概念。如果你完全沒有接觸過資料庫,直接從指令開始會比較吃力。建議先學一點 SQL 語法,或從圖形介面工具開始操作,理解「表格、欄位、查詢」這些基本概念之後,再回來用指令會順很多。
07我只是做一個簡單的小專案,用這套會不會太重?
官方說明指出,它適合從小型應用到大規模企業系統。但如果你只是要存少量資料、不想管伺服器設定,官方文件也提到 SQLite 這類「免伺服器」的資料庫,特色是簡單、可攜、零設定。如果你的專案不需要多人同時連線、不需要複雜查詢,SQLite 可能更省事。
08這套軟體是免費的嗎?有沒有什麼限制?
它分為 Community Edition(免費、開放原始碼)和 Enterprise Edition(付費訂閱)。免費版功能已經很完整,但官方文件提到,進階功能像是即時分析、企業級技術支援,只有在付費的 Enterprise Edition 才有。如果你需要的是基本儲存和查詢,免費版通常夠用。
09我習慣用圖形介面,這套軟體有中文介面嗎?
它的介面語言是英文,而且主要操作介面是命令列。官方文件提到的第三方工具,像是 phpMyAdmin、MySQL Workbench,是否有中文介面需要另外確認。如果你很依賴中文介面,可能要考慮其他有提供在地化語言的資料庫工具,或先試用看看英文介面能不能接受。
10這套軟體在 Windows 上跑得順嗎?
官方說明指出,它支援 Windows、macOS 和 Linux,安裝過程通常是執行安裝程式、按幾個下一步。但官方文件也提醒,系統需求會依作業系統和版本而異,需要足夠的磁碟空間、記憶體和處理器效能。如果你的電腦規格比較舊,建議先確認官方列出的需求再安裝。
11我聽說 MySQL 很容易被駭,是真的嗎?
官方文件強調它提供多種驗證機制和加密選項來保護資料,但安全性很大程度取決於你怎麼設定。預設安裝完成後,如果你沒有修改預設帳號密碼、沒有設定防火牆規則,確實會有風險。建議安裝後第一件事就是設定強密碼、建立專用帳號,並關閉不需要的網路連線。
12這套軟體和 SQL Server Express 比起來,哪個比較適合我?
兩者都是免費的資料庫,但取向不同。SQL Server Express 是微軟的產品,和 Windows 環境、微軟開發工具整合較好;MySQL 則強調跨平台、支援多種程式語言。官方文件也提到,SQL Server 是 MySQL 的替代方案之一。如果你主要用微軟生態系,SQL Server Express 可能比較順;如果你需要跨平台或搭配開源技術,MySQL 會是常見選擇。
下載與官方連結
mysql-essential-5.1.33-win32.msi · 35.46 MB · 連結指向軟體原廠
版本紀錄
- 2026-08-04 MySQL 8.0.46.0 566 MB
- 2026-01-20 MySQL 8.0.45.0 556 MB
- 2025-10-22 MySQL 8.0.44.0 558 MB
再看 5 筆
- 2025-07-23 MySQL 8.0.43.0 354 MB
- 2025-07-22 MySQL 8.0.42.0 354 MB
- 2025-01-21 MySQL 8.0.41.0 352 MB
- 2024-10-16 MySQL 8.0.40.0 306 MB
- 2024-07-29 MySQL 8.0.39.0 285 MB
這一版改了什麼
What's new in this version:
Functionality added or changed:
* mysql-test-run.pl now supports an --experimental=file_name option. It enables you to specify a file that contains a list of test cases that should be displayed with the [ exp-fail ] code rather than [ fail ] if they fail. (Bug#42888)
* The MD5 algorithm now uses the Xfree implementation. (Bug#42434)
* The query cache now checks whether a SELECT statement begins with SQL_NO_CACHE to determine whether it can skip checking for the query result in the query cache. This is not supported when SQL_NO_CACHE occurs within a comment. (Bug#37416)
Bugs fixed:
* Partitioning: A duplicate key error raised when inserting into a partitioned table used a different error code from that returned by such an error raised when inserting into a table that was not partitioned. (Bug#38719)
See also Bug#28842.
* Partitioning: Several error messages relating to partitioned tables were incorrect or missing. (Bug#36001)
* Replication: When --binlog_format was set to STATEMENT, a statement unsafe for statement-based logging caused an error or warning to be issued even if sql_log_bin was set to 0. (Bug#41980)
* Replication: When using MIXED replication format and temporary tables were created in statement-based mode, but a later operation in the same session caused a switch to row-based mode, the temporary tables were not dropped on the slave at the end of the session. (Bug#40013)
See also Bug#43046.
This regression was introduced by Bug#20499.
* Replication: When using the MIXED replication format, UPDATE and DELETE statements that searched for rows where part of the key had nullable BIT columns failed. This occurred because operations that inserted the data were replicated as statements, but UPDATE and DELETE statements affecting the same data were replicated using row-based format.
This issue did not occur when using statement-based replication (only) or row-based replication (only). (Bug#39753)
See also Bug#39648.
* Replication: The server SQL mode in effect when a stored procedure was created was not retained in the binary log. This could cause a CREATE PROCEDURE statement that succeeded on the master to fail on the slave.
This issue was first noticed when a stored procedure was created when ANSI_QUOTES was in effect on the master, but could possibly cause failed CREATE PROCEDURE statements and other problems on the slave when using other server SQL modes as well. (Bug#39526)
* Replication: If --secure-file-priv was set on the slave, it was unable to execute LOAD DATA INFILE statements sent from the master when using mixed-format or statement-based replication.
As a result of this fix, this security restriction is now ignored on the slave in such cases; instead the slave checks whether the files were created and should be read by the slave in its --slave-load-tmpdir. (Bug#38174)
* Replication: Server IDs greater than 2147483647 (232 – 1) were represented by negative numbers in the binary log. (Bug#37313)
* Replication: When its disk becomes full, a replication slave may wait while writing the binary log, relay log or MyISAM tables, continuing after space has been made available. The error message provided in such cases was not clear about the frequency with which checking for free space is done (once every 60 seconds), and how long the server waits after space has been freed before continuing (also 60 seconds); this caused users to think that the server had hung.
These issues have been addressed by making the error message clearer, and dividing it into two separate messages:
1. The error message Disk is full writing 'filename' (Errcode: error_code). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space) is printed only once.
2. The warning Retry in 60 secs, Message reprinted in 600 secs is printed once every for every 10 times that the check for free space is made; that is, the check is performed once each 60 seconds, but the reminder that space needs to be freed is printed only once every 10 minutes (600 seconds).
(Bug#22082)
* Replication: The statements DROP PROCEDURE IF EXISTS and DROP FUNCTION IF EXISTS were not written to the binary log if the procedure or function to be dropped did not exist. (Bug#13684)
See also Bug#25705.
* Use of USE INDEX hints could cause EXPLAIN EXTENDED to crash. (Bug#43354)
* For InnoDB tables, overflow in an AUTO_INCREMENT column could cause a server crash. (Bug#43203)
* On 32-bit Windows, mysqld could not use large buffers due to a 2GB user mode address limit. (Bug#43082)
* stderr should be unbuffered, but when the server redirected stderr to a file, it became buffered. (Bug#42790)
* The DATA_TYPE column of the INFORMATION_SCHEMA.COLUMNS table displayed the UNSIGNED attribute for floating-point data types. (The column should contain only the data type name.) (Bug#42758)
* For InnoDB tables, spurious duplicate-key errors could occur when inserting into an AUTO_INCREMENT column. (Bug#42714)
* mysqldump included views that were excluded with the --ignore-table option. (Bug#42635)
* An earlier bug fix resulted in the problem that the InnoDB plugin could not be used with a server that was compiled with the built-in InnoDB. To handle this two changes were made:
o The server now supports an --ignore-builtin-innodb option that causes the server to behave as if the built-in InnoDB is not present. This option causes other InnoDB options not to be recognized.
o For the INSTALL PLUGIN statement, the server reads option (my.cnf) files just as during server startup. This enables the plugin to pick up any relevant options from those files. Consequently, a plugin no longer is started with each option set to its default value.
Because of this change, it is possible to add plugin options to an option file even before loading a plugin (if the loose prefix is used). It is also possible to uninstall a plugin, edit my.cnf, and install the plugin again. Restarting the plugin this way enables it to the new option values without a server restart.
Note
To take advantage of this bug fix, InnoDB Plugin 1.0.4 or higher is required.
(Bug#42610)
This regression was introduced by Bug#29263.
* With the ONLY_FULL_GROUP_BY SQL mode enabled, some legal queries failed. (Bug#42567)
* Tables could enter open table cache for a thread without being properly cleaned up, leading to a server crash. (Bug#42419)
* For InnoDB tables, inserting into floating-point AUTO_INCREMENT columns failed. (Bug#42400)
* The InnoDB btr_search_drop_page_hash_when_freed() function had a race condition. (Bug#42279)
* Parsing of the optional microsecond component of DATETIME values did not fail gracefully when that component width was larger than the allowed six places. (Bug#42146)
* mysqldumpslow parsed the --debug and --verbose options incorrectly. (Bug#42027)
* Queries that used the loose index scan access method could return no rows. (Bug#41610)
* The error message for a too-long column comment was Unknown error rather than a more appropriate message. (Bug#41465)
* Use of SELECT * allowed users with rights to only some columns of a view to access all columns. (Bug#41354)
* The server did not robustly handle problems hang if a table opened with HANDLER needed to be re-opened because it had been altered to use a different storage engine that does not support HANDLER. The server also failed to set an error if the re-open attempt failed. These problems could cause the server to crash or hang. (Bug#41110, Bug#41112)
* SELECT statements executed concurrently with INSERT statements for a MyISAM table could cause incorrect results to be returned from the query cache. (Bug#41098)
* For prepared statements, multibyte character sets were not taking into account when calculating max_length for string values and mysql_stmt_fetch() could return truncated strings. (Bug#41078)
* Deprecation warnings that referred to MySQL 5.2 were changed to refer to MySQL 6.0. (Bug#41077)
* For user-defined variables in a query result, incorrect length values were returned in the result metadata. (Bug#41030)
* On Windows, starting the server with an invalid value for innodb_flush_method caused a crash. (Bug#40757)
* MySQL 5.1 crashed with index merge algorithm and merge tables.
A query in the MyISAM merge table caused a crash if the index merge algorithm was being used. (Bug#40675)
* With strict SQL mode enabled, setting a system variable to an out-of-bounds value caused an assertion failure. (Bug#40657)
* Table temporary scans were slower than necessary due to use of mmap rather than caching, even with the myisam_use_mmap system variable disabled. (Bug#40634)
* For a view that references a table in another database, mysqldump wrote the view name qualified with the current database name. This makes it impossible to reload the dump file into a different database. (Bug#40345)
* On platforms where long and pointer variables have different sizes, MyISAM could copy key statistics incorrectly, resulting in a server crash or incorrect cardinality values. (Bug#40321)
* DELETE tried to acquire write (not read) locks for tables accessed within a subquery of the WHERE clause. (Bug#39843)
* perror did not produce correct output for error codes 153 to 163. (Bug#39370)
* Several functions in libmysqld called exit() when an error occurred rather than returning an error to the caller. (Bug#39289)
* The innodb_log_arch_dir system variable is no longer available but was present in some of the sample option files included with MySQL distributions (such as my-huge.cnf). The line was present as a comment but uncommenting it would cause server startup failure so the line has been removed. (Bug#38249)
* --help output for myisamchk did not list the --HELP option. (Bug#38103)
* Comparisons between row constructors, such as (a, b) = (c, d) resulted in unnecessary Illegal mix of collations errors for string columns. (Bug#37601)
* If a user created a view that referenced tables for which the user had disjoint privileges, an assertion failure occurred. (Bug#37191)
* An argument to the MATCH() function that was an alias for an expression other than a column name caused a server crash. (Bug#36737)
* The event, general_log, and slow_log tables in the mysql database store server_id values, but did not use an UNSIGNED column and thus were not able to store the full range of ID values. (Bug#36540)
* On Windows, the _PC macro in my_global.h was causing problems for modern compilers. It has been removed because it is no longer used. (Bug#34309)
* For DROP FUNCTION with names that were qualified with a database name, the database name was handled in case-sensitive fashion even with lower_case_table_names set to 1. (Bug#33813)
* mysqldump --compatible=mysql40 emitted statements referring to the character_set_client system variable, which is unknown before MySQL 4.1. Now the statements are enclosed in version-specific comments. (Bug#33550)
* Use of MBR spatial functions such as MBRTouches() with columns of InnoDB tables caused a server crash rather than an error. (Bug#31435)
* The mysql client mishandled input parsing if a delimiter command was not first on the line. (Bug#31060)
* SHOW PRIVILEGES listed the CREATE ROUTINE privilege as having a context of Functions,Procedures, but it is a database-level privilege. (Bug#30305)
* mysqld --help did not work as root. (Bug#30261)
* CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, and OPTIMIZE TABLE erroneously reported a table to be corrupt if the table did not exist or the statement was terminated with KILL. (Bug#29458)
* SHOW TABLE STATUS could fail to produce output for tables with non-ASCII characters in their name. (Bug#25830)
* Allocation of stack space for error messages could be too small on HP-UX, leading to stack overflow crashes. (Bug#21476)
* Floating-point numbers could be handled with different numbers of digits depending on whether the text or prepared-statement protocol was used. (Bug#21205)
* ROUND() sometimes returned different results on different platforms. (Bug#15936)