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.mysqlserver.cn/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的功能正常工作。