From 4da56b65ab5f19564fea10abbf8f338b40a45c68 Mon Sep 17 00:00:00 2001
From: Ed Dawley <ed@eddawley.com>
Date: Wed, 23 Dec 2015 15:06:28 -0600
Subject: [PATCH 1/2] Fixes #2818.  Adds support for mysql backends via unix
 sockets

---
 conf/defaults.ini                 | 4 +++-
 pkg/services/sqlstore/sqlstore.go | 9 +++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/conf/defaults.ini b/conf/defaults.ini
index 3655a48a18a..c241fc3643c 100644
--- a/conf/defaults.ini
+++ b/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(1/var/run/mysqld/mysqld.sock)/database_name`
 # memcache: 127.0.0.1:11211
 
 
diff --git a/pkg/services/sqlstore/sqlstore.go b/pkg/services/sqlstore/sqlstore.go
index 88c35d630f8..50b6e931c7c 100644
--- a/pkg/services/sqlstore/sqlstore.go
+++ b/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, ":")

From ec36e2836878cbad0ba4bb536bf1461668ad15ba Mon Sep 17 00:00:00 2001
From: Ed Dawley <ed@eddawley.com>
Date: Wed, 23 Dec 2015 15:15:59 -0600
Subject: [PATCH 2/2] Small typo in comment

---
 conf/defaults.ini | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/conf/defaults.ini b/conf/defaults.ini
index c241fc3643c..0693044dbbb 100644
--- a/conf/defaults.ini
+++ b/conf/defaults.ini
@@ -81,7 +81,7 @@ provider = file
 # postgres: user=a password=b host=localhost port=5432 dbname=c sslmode=disable
 # mysql: go-sql-driver/mysql dsn config string, examples:
 #         `user:password@tcp(127.0.0.1:3306)/database_name`
-#         `user:password@unix(1/var/run/mysqld/mysqld.sock)/database_name`
+#         `user:password@unix(/var/run/mysqld/mysqld.sock)/database_name`
 # memcache: 127.0.0.1:11211