一、关系型数据库 1.1 Mysql各种数据库的连接字符串的连接格式(一般叫做database source name, 简称DSN)是不同的,本文汇总了各个数据库驱动程序的字符串连接方式。
[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...¶mN=valueN] // user@unix(/path/to/socket)/dbname // root:pw@unix(/tmp/mysql.sock)/myDatabase?loc=Local // user:password@tcp(localhost:5555)/dbname?tls=skip-verify&autocommit=true // user:password@/dbname?sql_mode=TRADITIONAL // user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname?timeout=90s&collation=utf8mb4_unicode_ci // id:password@tcp(your-amazonaws-uri.com:3306)/dbname // user@cloudsql(project-id:instance-name)/dbname // user@cloudsql(project-id:regionname:instance-name)/dbname // user:password@tcp/dbname?charset=utf8mb4,utf8&sys_var=esc%40ped // user:password@/dbname // user:password@/1.2 Postgres (pure Go)
postgres://[user[:password]@][netloc][:port][,...][/dbname][?param1=value1&...] postgres:// postgres://localhost postgres://localhost:5433 postgres://localhost/mydb postgres://user@localhost postgres://user:secret@localhost postgres://other@localhost/otherdb?connect_timeout=10&application_name=myapp postgres://host1:123,host2:456/somedb?target_session_attrs=any&application_name=myapp1.3 SQLite (uses cgo)
test.db file:test.db?cache=shared&mode=memory :memory: file::memory:
1.4 Apache Ignite/GridGain更多参数可以查看SQLiteDriver.Open
protocol://host:port/cache?param1=value1¶m2=value2¶mN=valueN
1.5 Apache Avatica/Phoenix各部分的详细设置可以查看How to use SQL driver
http://[username:password@]address:port[/schema][?parameter1=value&...parameterN=value]1.6 AWS Athena
db=default&output_location=s3://results
1.7 ClickHouse Via TCP可选值 poll_frequency 和 region
tcp://host1:9000?username=user&password=qwerty&database=clicks&read_timeout=10&write_timeout=20&alt_hosts=host2:9000,host3:90001.8 ClickHouse Via HTTP
schema://user:password@host[:port]/database?param1=value1&...¶mN=valueN1.9 DB2
DATABASE=db; HOSTNAME=dbhost; PORT=40000; PROTOCOL=TCPIP; UID=me; PWD=secret;1.10 DB2 LUW Via CGO
sqlconnect;[DATABASE=1.11 Firebird SQL;][UID= ;][PWD= ;] DSN=Sample; UID=asif; PWD=secrect; AUTOCOMMIT=0; CONNECTTYPE=1; DATABASE=db; HOSTNAME=dbhost; PORT=40000; PROTOCOL=TCPIP; UID=me; PWD=secret;
user:password@servername[:port_number]/database_name_or_file[?params1=value1[¶m2=value2]...]1.12 MS ADODB
DSN=myDsn;Uid=myUsername;Pwd=; FILEDSN=c:myDsnFile.dsn;Uid=myUsername;Pwd=;1.13 MS SQL Server (pure go)
qlserver://username:password@host/instance?param1=value¶m2=value1.14 MS SQL Server (uses cgo)
Server=myServerAddress;Database=myDatabase;User Id=myUsername;Password=myPassword;Failover Partner=myMirror;Max Pool Size=200;Compatibility Mode=Sybase1.15 MySQL by ziutek
[PROTOCOL_SPECIFIC*]DBNAME/USER/PASSWD // DBNAME/USER/PASSWD // unix:SOCKPATH*DBNAME/USER/PASSWD // unix:SOCKPATH,OPTIONS*DBNAME/USER/PASSWD // tcp:ADDR*DBNAME/USER/PASSWD // tcp:ADDR,OPTIONS*DBNAME/USER/PASSWD1.16 ODBC
DSN=myDsn;Uid=myUsername;Pwd=; FILEDSN=c:myDsnFile.dsn;Uid=myUsername;Pwd=;1.17 Oracle
[username/[password]@]host[:port][/instance_name][?param1=value1&...¶mN=valueN]1.18 Oracle
username/password@dblink1.19 Oracle
ora://login:password@sid/? sysdba=0& sysoper=0& poolMinSessions=1& poolMaxSessions=1000& poolIncrement=1& connectionClass=POOLED& standaloneConnection=0& enableEvents=0& heterogeneousPool=0& prelim=01.20 QL
ql.db file://ql.db memory://mem.db1.21 Postgres (pure Go)
user=username password=password host=1.2.3.4 port=5432 dbname=mydb sslmode=disable application_name=pgxtest search_path=admin user=username password=password host=1.2.3.4 dbname=mydb1.22 Presto
http[s]://user[:pass]@host[:port][?parameters]1.23 SAP HANA (pure go)
hdb://1.24 Snowflake (pure Go): @ : // "hdb://myuser:mypassword@localhost:39013?TLSRootCAFile=trust.pem" // "hdb://myuser:mypassword@localhost:39013?TLSRootCAFile=trust.pem&TLSServerName=hostname" // "hdb://myuser:mypassword@localhost:39013?TLSInsecureSkipVerify"
jsmith:mypassword@myaccount/mydb/testschema?warehouse=mywh username[:password]@accountname/dbname/schemaname[?param1=value&...¶mN=valueN username[:password]@accountname/dbname[?param1=value&...¶mN=valueN username[:password]@hostname:port/dbname/schemaname?account=1.25 SQLite (uses cgo)[¶m1=value&...¶mN=valueN]
file:data.db file:/home/fred/data.db file:///home/fred/data.db file://localhost/home/fred/data.db file:data.db?mode=ro&cache=private file:/home/fred/data.db?vfs=unix-dotfile file:data.db?mode=readonly // ":memory:" for memory db, "" for temp file db1.26 Sybase SQL Anywhere
parameter1=value1;parameter2=value2;... UID=DBA;PWD=sql;Host=demo12;DatabaseName=demo;ServerName=myserver HOST=myhost;DBN=demo;UID=DBA;PWD=sql;ServerName=demo121.27 Vitess
db, err := vitessdriver.Open("localhost:15991", "keyspace", "master", 30*time.Second)
二、NoSql数据库
2.1 Memcached
mc := memcache.New("10.0.0.1:11211", "10.0.0.2:11211", "10.0.0.3:11212")
2.2 Mongodb
client, err := mongo.NewClient("mongodb://localhost:27017")
2.3 Redis
c, err := redis.Dial("tcp", ":6379")
2.4 redis-go-cluster
cluster, err := redis.NewCluster(
&redis.Options{
StartNodes: []string{"127.0.0.1:7000", "127.0.0.1:7001", "127.0.0.1:7002"},
ConnTimeout: 50 * time.Millisecond,
ReadTimeout: 50 * time.Millisecond,
WriteTimeout: 50 * time.Millisecond,
KeepAlive: 16,
AliveTime: 60 * time.Second,
})
Go 各种数据库连接字符串汇总



