diff --git a/CHANGELOG b/CHANGELOG
index 3469a1e026b378d7bb269604bea02268dcfde23c..5ca9777e258bc68bee459a72bbf658892b863cd7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -15,6 +15,7 @@ v 8.5.0 (unreleased)
   - Don't vendor minified JS
   - Display 404 error on group not found
   - Track project import failure
+  - Display database type and version in Administration dashboard
   - Fix visibility level text in admin area (Zeger-Jan van de Weg)
   - Warn admin during OAuth of granting admin rights (Zeger-Jan van de Weg)
   - Update the ExternalIssue regex pattern (Blake Hitchcock)
diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml
index cc389c3ae08ff0ea9baeda2620c4f20da84fb5ee..3274ba5377b1e983574ed725966f382ba95b5438 100644
--- a/app/views/admin/dashboard/index.html.haml
+++ b/app/views/admin/dashboard/index.html.haml
@@ -92,6 +92,11 @@
         Rails
         %span.pull-right
           #{Rails::VERSION::STRING}
+
+      %p
+        = Gitlab::Database.adapter_name
+        %span.pull-right
+          = Gitlab::Database.version
   %hr
   .row
     .col-sm-4
diff --git a/lib/gitlab/database.rb b/lib/gitlab/database.rb
index de77a6fbff1c54c0780f7bddbf75d76061dcfc12..6ebb8027553836711241c7aa70c2547cd8bb5570 100644
--- a/lib/gitlab/database.rb
+++ b/lib/gitlab/database.rb
@@ -1,16 +1,23 @@
 module Gitlab
   module Database
+    def self.adapter_name
+      connection.adapter_name
+    end
+
     def self.mysql?
-      ActiveRecord::Base.connection.adapter_name.downcase == 'mysql2'
+      adapter_name.downcase == 'mysql2'
     end
 
     def self.postgresql?
-      ActiveRecord::Base.connection.adapter_name.downcase == 'postgresql'
+      adapter_name.downcase == 'postgresql'
+    end
+
+    def self.version
+      database_version.match(/\A(?:PostgreSQL |)([^\s]+).*\z/)[1]
     end
 
     def true_value
-      case ActiveRecord::Base.connection.adapter_name.downcase
-      when 'postgresql'
+      if self.class.postgresql?
         "'t'"
       else
         1
@@ -18,12 +25,31 @@ module Gitlab
     end
 
     def false_value
-      case ActiveRecord::Base.connection.adapter_name.downcase
-      when 'postgresql'
+      if self.class.postgresql?
         "'f'"
       else
         0
       end
     end
+
+    private
+
+    def self.connection
+      ActiveRecord::Base.connection
+    end
+
+    def self.database_version
+      row = connection.execute("SELECT VERSION()").first
+
+      if postgresql?
+        row['version']
+      else
+        row.first
+      end
+    end
+
+    def connection
+      self.class.connection
+    end
   end
 end
diff --git a/spec/lib/gitlab/database_spec.rb b/spec/lib/gitlab/database_spec.rb
index 8461e8ce50d6c3dbf4a2cfbea877f3a6052a6a04..bd8688fefa1da0c1cdffb6c116244630b6f1fe83 100644
--- a/spec/lib/gitlab/database_spec.rb
+++ b/spec/lib/gitlab/database_spec.rb
@@ -14,4 +14,24 @@ describe Gitlab::Database, lib: true do
 
     it { is_expected.to satisfy { |val| val == true || val == false } }
   end
+
+  describe '.version' do
+    context "on mysql" do
+      it "extracts the version number" do
+        allow(described_class).to receive(:database_version).
+          and_return("5.7.12-standard")
+
+        expect(described_class.version).to eq '5.7.12-standard'
+      end
+    end
+
+    context "on postgresql" do
+      it "extracts the version number" do
+        allow(described_class).to receive(:database_version).
+          and_return("PostgreSQL 9.4.4 on x86_64-apple-darwin14.3.0")
+
+        expect(described_class.version).to eq '9.4.4'
+      end
+    end
+  end
 end