第 8 章“MySQL”的学习笔记。如今 LAMP 大行其道,还用 C / C++ 接口是否有些非主流呢?
安装和配置 MySQL
下面是我的安装配置步骤,完成后可以从主机(Windows)上的 NetBeans 连接到客机(VirtualBox 中的 Debian)上的 MySQL 数据库:
-
安装 MySQL 数据库和开发工具包:
root@vdeb:~$ apt-get install mysql-server
root@vdeb:~$ apt-get install libmysqlclient-dev
装完后 MySQL 就自动运行了。
-
编辑 /etc/mysql/my.cnf,将“bind-address = 127.0.0.1”这一行注释掉,再加一行“default-storage-engine=INNODB”,然后重启 MySQL:
root@vdeb:~$ mysqladmin -uroot -p shutdown
root@vdeb:~$ mysqld_safe &
这使得可从远程客户端访问 MySQL 数据库,并且存储引擎改用 InnoDB,因为默认的 MYISAM 不支持事务。
-
因为安全问题,root 用户默认不支持远程登录。所以最好另外创建一个用户,并赋予相应权限:
zhyi@vdeb:~$ mysql -uroot -p
mysql> create database zhyidb;
mysql> grant all on zhyidb.* to 'zhyi'@'%' identified by 'pwd';
mysql> \q
以上命令创建了一个数据库 zhyidb,并且将对它的全部操作权限赋予用户 zhyi。用户 zhyi 将被自动创建,初始密码为“pwd”,'zhyi'@'%'
表示可从任意远程主机使用 zhyi 用户进行登录。
-
在 VirtualBox 中配置端口转发 3306→3306,然后就可以直接用 NetBeans 的数据库资源管理器连接刚创建的 zhyidb 数据库了。这里是 JDBC 客户端,其他类型的客户端也应该没有问题。
执行 SQL 语句
不看不知道,一看吓一跳!本以为通过 C 接口操作数据库比较高深,结果越看越眼熟:这不就是 JDBC 的翻版吗?(也许应该反过来说才对)不论执行查询还是操作事务都如出一辙。这样看来,JDBC 实际上是两层封装(JDBC 接口→JDBC 驱动程序→数据库 API),而 JPA 之流的封装层次则更高了,难怪性能常常是老大难……