diff --git a/DBDirect.hs b/DBDirect.hs
new file mode 100644
--- /dev/null
+++ b/DBDirect.hs
@@ -0,0 +1,5 @@
+import Database.HaskellDB.HDBC.MySQL
+import Database.HaskellDB.DBDirect
+
+main :: IO ()
+main = dbdirect driver
diff --git a/Database/HaskellDB/HDBC/MySQL.hs b/Database/HaskellDB/HDBC/MySQL.hs
new file mode 100644
--- /dev/null
+++ b/Database/HaskellDB/HDBC/MySQL.hs
@@ -0,0 +1,53 @@
+-----------------------------------------------------------
+-- |
+-- Module      :  Database.HaskellDB.HDBC.MySQL
+-- Modified from Database.HaskellDB.HDBC.ODBC by Andrew Miller
+-- Copyright   :  HWT Group (c) 2003, Bjorn Bringert (c) 2006, Andrew Miller (c) 2009
+-- License     :  BSD-style
+-- 
+-- Maintainer  :  haskelldb-users@lists.sourceforge.net
+-- Stability   :  experimental
+-- Portability :  portable
+--
+-----------------------------------------------------------
+module Database.HaskellDB.HDBC.MySQL (
+		      mysqlConnect,
+                      DriverInterface(..), driver
+		      ) where
+
+import Database.HaskellDB.Database
+import Database.HaskellDB.HDBC
+import Database.HaskellDB.DriverAPI
+import Database.HaskellDB.Sql.Generate (SqlGenerator)
+import Data.List
+
+import Database.HDBC.MySQL
+
+mysqlConnect :: MonadIO m => SqlGenerator -> [(String,String)] -> (Database -> m a) -> m a
+mysqlConnect gen opts = hdbcConnect gen (connectMySQL conninfo)
+    -- strangely enough, mysql+unixodbc want a semicolon terminating connstring
+    where conninfo = foldl' (\info (k,v) ->
+                                 case k
+                                 of
+                                   "host" -> info { mysqlHost = v }
+                                   "user" -> info { mysqlUser = v }
+                                   "password" -> info { mysqlPassword = v }
+                                   "database" -> info { mysqlDatabase = v }
+                                   "port" -> info { mysqlPort = read v }
+                                   "unixSocket" -> info { mysqlUnixSocket = v }
+                                   _ -> info
+                            ) defaultMySQLConnectInfo opts
+
+options :: [(String, String)]
+options =
+    []
+
+mysqlConnectOpts :: MonadIO m => [(String,String)] -> (Database -> m a) -> m a
+mysqlConnectOpts opts f = 
+    do gen <- getGenerator opts
+       let opts' = filter ((/="generator") . fst) opts
+       mysqlConnect gen opts' f
+
+-- | This driver passes its options through to HDBC.
+driver :: DriverInterface
+driver = defaultdriver { connect = mysqlConnectOpts, requiredOptions = options }
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,4 @@
+#!/usr/bin/env runghc
+
+import Distribution.Simple
+main = defaultMain
diff --git a/haskelldb-hdbc-mysql.cabal b/haskelldb-hdbc-mysql.cabal
new file mode 100644
--- /dev/null
+++ b/haskelldb-hdbc-mysql.cabal
@@ -0,0 +1,25 @@
+Name: haskelldb-hdbc-mysql
+Version: 0.1
+Cabal-version: >= 1.2
+Build-type: Simple
+Copyright: The authors
+Maintainer: haskelldb-users@lists.sourceforge.net
+Author: Andrew Miller, Daan Leijen, Conny Andersson, Martin Andersson, Mary Bergman, Victor Blomqvist, Bjorn Bringert, Anders Hockersten, Torbjorn Martin, Jeremy Shaw
+Category: Database
+License: BSD3
+Synopsis: HaskellDB support for the HDBC MySQL driver.
+Description: haskelldb-hdbc-mysql allows the HDBC-mysql package to be used from HaskellDB. This means HaskellDB can be used with MySQL, without going through ODBC.
+
+Library
+  Build-depends: 
+    base <= 4,
+    mtl, 
+    haskelldb>=0.12,
+    haskelldb-hdbc>=0.12,
+    HDBC>=2.0.0 && < 2.2.0,
+    HDBC-mysql>=0.1
+  Exposed-Modules:
+        Database.HaskellDB.HDBC.MySQL
+
+Executable DBDirect-hdbc-mysql
+  Main-is: DBDirect.hs
