Browse Source

Merge pull request #3598 from eddawley/ISSUE-2818

Fixes #2818.  Adds support for mysql backends via unix sockets
Carl Bergquist 10 years ago
parent
commit
311624beaa
2 changed files with 10 additions and 3 deletions
  1. 3 1
      conf/defaults.ini
  2. 7 2
      pkg/services/sqlstore/sqlstore.go

+ 3 - 1
conf/defaults.ini

@@ -79,7 +79,9 @@ provider = file
 # file: session dir path, is relative to grafana data_path
 # redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=grafana`
 # postgres: user=a password=b host=localhost port=5432 dbname=c sslmode=disable
-# mysql: go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1:3306)/database_name`
+# mysql: go-sql-driver/mysql dsn config string, examples:
+#         `user:password@tcp(127.0.0.1:3306)/database_name`
+#         `user:password@unix(/var/run/mysqld/mysqld.sock)/database_name`
 # memcache: 127.0.0.1:11211
 
 

+ 7 - 2
pkg/services/sqlstore/sqlstore.go

@@ -113,8 +113,13 @@ func getEngine() (*xorm.Engine, error) {
 	cnnstr := ""
 	switch DbCfg.Type {
 	case "mysql":
-		cnnstr = fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
-			DbCfg.User, DbCfg.Pwd, DbCfg.Host, DbCfg.Name)
+		protocol := "tcp"
+		if strings.HasPrefix(DbCfg.Host, "/") {
+			protocol = "unix"
+		}
+
+		cnnstr = fmt.Sprintf("%s:%s@%s(%s)/%s?charset=utf8",
+			DbCfg.User, DbCfg.Pwd, protocol, DbCfg.Host, DbCfg.Name)
 	case "postgres":
 		var host, port = "127.0.0.1", "5432"
 		fields := strings.Split(DbCfg.Host, ":")