如何使用共享MySQL服务 ###################### 概述 ======= 在使用共享MySQL服务前,您需要先在其服务面板里创建自己的数据库。 以下是和共享数据库使用相关的环境变量: ============== =============================================== MYSQL_HOST MySQL主库的host MYSQL_HOST_S MySQL从库的host MYSQL_PORT MySQL的端口 ACCESSKEY 应用的AccessKey(当前应用的数据库的用户名) SECRETKEY 应用的SecretKey(当前应用的数据库的密码) ============== =============================================== .. _docker-mysql-nodejs: NodeJS ========== 对于NodeJS应用,您可以使用 `node-mysql `_ 。 您可以通过 `npm `_ 来安装node-mysql扩展。 .. code-block:: console $ npm install --save mysql 以上命令会安装node-mysql到node_modules目录下,并将依赖添加到 *package.json* 里。 下面是一段简单的使用示例: .. code-block:: javascript var mysql = require('mysql'); // 连接共享型MySQL var connection = mysql.createConnection({ host : process.env.MYSQL_HOST, port : process.env.MYSQL_PORT, user : process.env.ACCESSKEY, password : process.env.SECRETKEY, database : 'app_' + process.env.APPNAME }); connection.query('show status', function(err, rows) { if (err) { // 处理错误 } // 处理query的结果 }); `完整示例代码 `__ .. _docker-mysql-go: Go ========= 您可以使用 `github.com/go-sql-driver/mysql `_ 来连接共享MySQL数据库。 .. code-block:: go import "os" import "database/sql" import _ "github.com/go-sql-driver/mysql" db, err := sql.Open("mysql", os.ExpandEnv("$ACCESSKEY:$SECRETKEY@tcp($MYSQL_HOST:$MYSQL_PORT)/app_$APPNAME")) defer db.Close() `完整示例代码 `__ .. _docker-mysql-java: Java ========= 您可以直接使用jdbc驱动连接数据库,在您项目中的 *pom.xml* 文件中添加您需要的jdbc的依赖库。 .. code-block:: xml mysql mysql-connector-java 5.1.20 使用: .. code-block:: java String driver = "com.mysql.jdbc.Driver"; String username = System.getenv("ACCESSKEY"); String password = System.getenv("SECRETKEY"); //System.getenv("MYSQL_HOST_S"); 为从库,只读 String dbUrl = String.format("jdbc:mysql://%s:%s/%s", System.getenv("MYSQL_HOST"), System.getenv("MYSQL_PORT"), System.getenv("MYSQL_DB")); try { Class.forName(driver).newInstance(); con = DriverManager.getConnection(dbUrl, username, password); // ... } catch (Exception e) { // ... } .. note:: 注意:如果您使用了连接池,如C3P0,请将连接池的idletime调整60秒以下,否则连接可能会被服务端主动断开。 .. _docker-mysql-python: Python ========== 您可以使用 `MySQL-python `_ 或者任何其它python mysql客户端连接数据库。 安装: .. code-block:: console $ pip install MySQL-python 您需要将 ``MySQL-python`` 加入 ``requirements.txt`` 中,告诉容器云的构建程序在构建的时候安装MySQL-python。 使用: .. code-block:: python host = os.environ.get('MYSQL_HOST') port = int(os.environ.get('MYSQL_PORT')) user = os.environ.get('ACCESSKEY') passwd = os.environ.get('SECRETKEY') db = 'app_' + os.environ.get('APPNAME') import MySQLdb db = MySQLdb.connect(host=host, port=port, user=user, passwd=passwd, db=db)