MySQL/資料庫操作
CREATE DATABASE database;
需要?許可權。
mysqladmin create 是此函式的命令列包裝器。
注意:在 MySQL 中,CREATE SCHEMA 是 CREATE DATABASE 的完美同義詞,與其他一些資料庫管理系統(如 Oracle 或 SQL Server)不同。
DROP DATABASE database;
需要?許可權。
mysqladmin drop 是此函式的命令列包裝器。-f 選項可用於抑制互動式確認(對無人值守指令碼有用)。
在某些 5.1.x 版本中,有一個 RENAME DATABASE db1 TO db2; 命令,但它已被刪除,因為透過 SQL 重新命名資料庫會導致一些資料丟失問題[1]。
但是,在命令列中,您可以建立/匯出/匯入/刪除
mysqladmin create name2
mysqldump --opt name1 | mysql name2
mysqladmin drop -f name1
另一個選項是,如果您有 root 許可權,可以重新命名資料庫目錄
cd /var/lib/mysql/
/etc/init.d/mysql stop
mv name1/ name2/
/etc/init.d/mysql start
您還需要刪除 name1 上的許可權並在 name2 上重新建立它們
UPDATE mysql.db SET `Db`='name2' WHERE `Db`='name1';
FLUSH PRIVILEGES;
MySQL 中沒有直接的複製命令。但是,這可以使用一些工具輕鬆完成。
mysqldump 命令列可用於生成資料庫的完整平面檔案副本。然後,您可以在另一個數據庫中重新注入此副本。
這需要直接訪問資料庫;如果您沒有,則可能需要使用 phpMyAdmin 代替。
# First, clean-up the target database:
mysqladmin drop -f base2
mysqladmin create base2
# Copy base1 to base2:
mysqldump --opt base1 | mysql base2
要在每天午夜自動備份[2],在 Linux 中
$ crontab -e
0 0 * * * /usr/local/bin/mysqldump -uLOGIN -PPORT -hHOST -pPASS base1 | gzip -c > `date “+\%Y-\%m-\%d”`.gz

- 使用 Linux
mysql -h localhost -u root MaBase < MaBase.sql
- 在 Windows 中,程式可能不在環境變數中
"C:\Program Files (x86)\EasyPHP\binaries\mysql\bin\mysql.exe" -h localhost -u root MyDB < MyDB.sql
與 PhpMyAdmin 匯入相反,沒有限制。例如,我們可以用五分鐘的時間載入一個 2 GB 的資料庫。
| 本節是存根。 您可以透過 擴充套件它 來幫助華夏公益教科書。 |
工具:MySQL 遷移工具包
DBDesigner 開始變得老舊。它在 GNU GPL 下發布,但不能完全被認為是自由軟體,因為它需要非自由的 Kylix 編譯器來構建。
但 MySQL AB 收購了 fabFORCE[需要引用][3],它分發了 DB Designer,而 MySQL Workbench 是下一個版本。目前該專案仍處於 Alpha 階段,尚未準備好使用。
同時,如果您使用 DBDesigner 的最新版本,您會發現它無法連線到 MySQL,並出現“無法載入 libmysqlclient.so”錯誤。為了解決這個問題,
- 安裝 MySQL“共享相容庫”(從 https://dev.mysql.com.tw/downloads/mysql/5.0.html#downloads 獲取版本 5.0,通用 RPMS 稱為 MySQL-shared-compat.i386 即可)。
- 將 DBDesigner 的 libmysqlclient.so 版本替換為新安裝的版本
sudo ln -sf /usr/lib/libmysqlclient.so.10 /usr/lib/DBDesigner4/libmysqlclient.so
- 查詢並安裝
kylixlibs3-unwind-3.0-rh.4.i386.rpm - 找到一箇舊的 xorg(例如
xorg-x11-libs-6.8.2-37.FC4.49.2.1.i386.rpm來自 FC4)並提取它
rpm2cpio x.rpm | cpio -i
- 獲取該包中的 libXft.so.1.1 並安裝它
sudo cp libXft.so.1.1 /usr/lib ldconfig
現在您可以從 DBDesigner4 連線到您的 MySQL5 伺服器。將此視為等待社群(免費)和商業(非免費)版本 MySQL Workbench 的臨時解決方案。
典型配置
- 主機上的 MySQL 資料庫(其名稱在下面為
mysqlhost) - 客戶端機器上的 OOo 2(例如 Debian GNU/Linux)
- 透過 ODBC 連線。
這是一個客戶端配置:我們需要 mysql-client
aptitude install mysql-client
在 Fedora/CentOS 下
yum install mysql
在安裝 ODBC 之前,我們可以本地測試遠端連線
$ mysql -h mysqlhost -u user1 mysqldatabase -p Enter password: PassUser1
您必須在 mysqlhost 上建立資料庫 mysqldatabase 和使用者 user1。似乎沒有問題(希望沒有;-))
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 33 to server version: 5.0.24a-Debian_5~bpo.1-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
然後,可以透過不同的查詢進行測試
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysqldatabase | +--------------------+ 2 rows in set (0.00 sec) .... mysql> quit; Bye
很好!讓我們在客戶端機器上使用 OOo 和 ODBC
aptitude install libmyodbc unixodbc
對於 Fedora/CentOS
yum install mysql-connector-odbc unixODBC
建立了 /etc/odbc.ini(空檔案)和 /etc/odbcinst.ini。odbcinst.ini聲明瞭可用的ODBC驅動程式。以下是MySQL語句(.so檔案路徑可能因發行版而異);對於Debian
[MySQL] Description = MySQL driver Driver = /usr/lib/odbc/libmyodbc.so Setup = /usr/lib/odbc/libodbcmyS.so CPTimeout = CPReuse = FileUsage = 1
對於CentOS
[MySQL] Description = ODBC for MySQL Driver = /usr/lib/libmyodbc3.so Setup = /usr/lib/libodbcmyS.so FileUsage = 1
現在我們可以使用 odbcinst
# odbcinst -j unixODBC 2.2.4 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini USER DATA SOURCES..: /root/.odbc.ini
更多選項: man odbcinst
首先,我們必須至少建立一個DSN(資料來源名稱或資料集名稱),因為每個ODBC連線都是透過現有的DSN初始化的。這在所有情況下都是正確的,因此它是OOo的ODBC連線所必需的。
要建立DSN,有不同的方法
- 修改/etc/odbc.ini(影響所有使用者)
- 修改~/.odbc.ini(影響特定使用者)
- 使用圖形應用程式,例如ODBCConfig(Debian:
unixodbc-bin,Fedora:unixODBC-kde)。最後,這些圖形應用程式會修改/etc/odbc.ini或~/.odbc.ini
例如,一個/etc/odbc.ini檔案(DSN的名稱在方括號[]之間)
[MySQL-test] Description = MySQL ODBC Database TraceFile = stderr Driver = MySQL SERVER = mysqlhost USER = user1 PASSWORD = DATABASE = mysqldatabase
在這種情況下,DSN稱為MySQL-test
然後我們可以使用isql命令進行測試
$ isql -v MySQL-test user1 PassUser1 +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> show databases; +-------------------+ | Database | +-------------------+ | information_schema| | mysqldatabase | +-------------------+ 2 rows affected 2 rows returned SQL> quit;
現在,從OOo
-> File -> New -> Database -> Connecting to an existing database -> MySQL -> Next -> Connect using ODBC -> Next -> Choosing a Data Source -> MySQL-test -> Next -> Username : user1 (tick password required) -> Yes, register the database for me -> Finish
在這個步驟中,我們連線到mysqldatabase資料庫,以使用者user1身份。在訪問資料庫之前,例如建立表時,我們將提供user1密碼。然後,透過OOo,現在可以非常容易地訪問和操作資料庫。我們只需注意到以下情況下需要Java
- 用於建立表單的嚮導(相反,直接建立表單不需要任何JRE)。
- 用於建立報表的嚮導。
- 用於建立查詢的嚮導(相反,直接建立查詢或透過檢視建立查詢不需要任何JRE)。
- 用於建立表的嚮導(相反,直接建立表或建立檢視不需要任何JRE)。
GNU/Linux發行版通常將OpenOffice與IcedTea(openjdk-6-jre/java-1.6.0-openjdk)或GCJ(java-gcj-compat/java-1.4.2-gcj-compat)一起釋出,以便這些基於Java的功能正常工作。