Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
function New-MySqlConnection {
<#
.SYNOPSIS
Create a new MySQL database connection.
.DESCRIPTION
This function will create a new MySQL database connection and return a database connection object.
.EXAMPLE
New-MySqlConnection -DatabaseServer 'dbserver01' -DatabaseName 'MyDatabase'
Will create a new database connection object using integrated security.
.EXAMPLE
New-MySqlConnection -DatabaseServer 'dbserver01' -DatabaseName 'MyDatabase' -Credential 'dbuser'
Will create a new database connection object after prompting for the password to the user 'dbuser'.
.LINK
http://dev.mysql.com/downloads/connector/net/
.NOTES
Author: Øyvind Kallstad
Date: 21.01.2015
Version: 1.0
#>
[CmdletBinding()]
param (
# Name of server or instance.
[Parameter(Mandatory = $true, Position = 0)]
[Alias('Server','ComputerName','dbServer')]
[string] $DatabaseServer,
# Name of database.
[Parameter(Mandatory = $true, Position = 1)]
[string] $DatabaseName,
# Port to connect to. Default is 3306.
[Parameter()]
[int] $Port = 3306,
# Credential, if not using integrated security.
[Parameter(Mandatory = $false)]
[System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty
)
try {
# load MySQL .NET connector
[void][System.Reflection.Assembly]::LoadWithPartialName('MySql.Data')
# start building the connection string
$connectionStringBuilder = New-Object 'MySql.Data.MySqlClient.MySqlConnectionStringBuilder'
$connectionStringBuilder.Server = $DatabaseServer
$connectionStringBuilder.Database = $DatabaseName
$connectionStringBuilder.Port = $Port
# if credential parameter is not used, integrated security will be used
if (-not($PSBoundParameters['Credential'])) {
$connectionStringBuilder.IntegratedSecurity = $true
}
# otherwise user user id and password
else {
$connectionStringBuilder.UserId = $Credential.UserName
$connectionStringBuilder.Password = $Credential.GetNetworkCredential().Password
}
# create database connection
$dbConnection = New-Object MySql.Data.MySqlClient.MySqlConnection
$dbConnection.ConnectionString = $connectionStringBuilder.ToString()
# open database connection
[void]$dbConnection.Open()
# return the connection object
Write-Output $dbConnection
}
catch {
Write-Warning "At line:$($_.InvocationInfo.ScriptLineNumber) char:$($_.InvocationInfo.OffsetInLine) Command:$($_.InvocationInfo.InvocationName), Exception: '$($_.Exception.Message.Trim())'"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment