# man > CGI::Session::Driver::mysql

---
type: CommandReference
command: CGI::Session::Driver::mysql
mode: perldoc
section: 3pm
source: perldoc
---

## Quick Reference

- `CGI::Session->new('driver:mysql', $sid)` — create session with MySQL driver
- `CGI::Session->new('driver:mysql', $sid, { DataSource => 'dbi:mysql:test', User => 'sherzodr', Password => 'hello' })` — with DSN and credentials
- `CGI::Session->new('driver:mysql', $sid, { Handle => $dbh })` — using existing DBI handle
- `CGI::Session->new('driver:mysql', undef, { TableName => 'session', IdColName => 'my_id', DataColName => 'my_data', DataSource => 'dbi:mysql:project' })` — custom table and column names
- `CGI::Session->new('driver:mysql', $sid, { DataSource => 'shopping_cart' })` — shorthand DataSource (leading 'dbi:mysql:' omitted)
- Create table: `CREATE TABLE sessions ( id CHAR(32) NOT NULL PRIMARY KEY, a_session TEXT NOT NULL )`

## Name

`CGI::Session::Driver::mysql` — CGI::Session driver for MySQL database

## Synopsis

perl
$s = CGI::Session->new('driver:mysql', $sid);
$s = CGI::Session->new('driver:mysql', $sid, {
    DataSource => 'dbi:mysql:test',
    User       => 'sherzodr',
    Password   => 'hello'
});
$s = CGI::Session->new('driver:mysql', $sid, { Handle => $dbh });
## Options

All arguments from [CGI::Session::Driver::DBI](https://metacpan.org/pod/CGI::Session::Driver::DBI) are supported. Additional driver-specific behavior:

- `DataSource` — DSN for MySQL; the leading `dbi:mysql:` may be omitted (e.g., `'shopping_cart'` is equivalent to `'dbi:mysql:shopping_cart'`)
- `User` — database username
- `Password` — database password
- `Handle` — an existing DBI database handle
- `TableName` — name of the session table (default `sessions`)
- `IdColName` — name of the session ID column (default `id`)
- `DataColName` — name of the session data column (default `a_session`)

## Examples

**Create session table (session ID column must be PRIMARY KEY or UNIQUE):**

sql
CREATE TABLE sessions (
    id CHAR(32) NOT NULL PRIMARY KEY,
    a_session TEXT NOT NULL
);
**Session instantiation with custom table/column names:**

perl
$s = CGI::Session->new('driver:mysql', undef, {
    TableName  => 'session',
    IdColName  => 'my_id',
    DataColName => 'my_data',
    DataSource => 'dbi:mysql:project',
});
**Using a pre-existing database handle:**

perl
$s = CGI::Session->new('driver:mysql', $sid, { Handle => $dbh });
**Shorthand DataSource (omitting `dbi:mysql:`):**

perl
$s = CGI::Session->new('driver:mysql', $sid, { DataSource => 'shopping_cart' });
# same as: { DataSource => 'dbi:mysql:shopping_cart' }
**Changing table name after object creation:**

perl
$s->table_name('new_name');
## See Also

- [CGI::Session](https://metacpan.org/pod/CGI::Session) — session management framework
- [CGI::Session::Driver::DBI](https://metacpan.org/pod/CGI::Session::Driver::DBI) — parent class for DBI-based drivers