如何使用共享MySQL服务¶
概述¶
在使用共享MySQL服务前,您需要先在其服务面板里创建自己的数据库。
以下是和共享数据库使用相关的环境变量:
MYSQL_HOST MySQL主库的host MYSQL_HOST_S MySQL从库的host MYSQL_PORT MySQL的端口 ACCESSKEY 应用的AccessKey(当前应用的数据库的用户名) SECRETKEY 应用的SecretKey(当前应用的数据库的密码)
NodeJS¶
对于NodeJS应用,您可以使用 node-mysql 。
您可以通过 npm 来安装node-mysql扩展。
$ npm install --save mysql
以上命令会安装node-mysql到node_modules目录下,并将依赖添加到 package.json 里。
下面是一段简单的使用示例:
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的结果
});
Go¶
您可以使用 github.com/go-sql-driver/mysql 来连接共享MySQL数据库。
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()
Java¶
您可以直接使用jdbc驱动连接数据库,在您项目中的 pom.xml 文件中添加您需要的jdbc的依赖库。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.20</version>
</dependency>
使用:
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) {
// ...
}
注解
注意:如果您使用了连接池,如C3P0,请将连接池的idletime调整60秒以下,否则连接可能会被服务端主动断开。
Python¶
您可以使用 MySQL-python 或者任何其它python mysql客户端连接数据库。
安装:
$ pip install MySQL-python
您需要将 MySQL-python
加入 requirements.txt
中,告诉容器云的构建程序在构建的时候安装MySQL-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)