import "v.io/x/ref/services/internal/dbutil"
Package dbutil implements utilities for opening and configuring connections to MySQL-like databases, with optional TLS support.
Functions in this file are not thread-safe. However, the returned *sql.DB is. Sane defaults are assumed: utf8mb4 encoding, UTC timezone, parsing date/time into time.Time.
const SQLConfigFileDescription = "" /* 821 byte string literal not displayed */
Description of the SQL configuration file format.
const SQLCreateTableSuffix = "CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
SQL statement suffix to be appended when creating tables.
Convenience function to parse and activate the configuration file and open a connection to the SQL database. If multiple connections with the same configuration are needed, a single ActivateSQLConfigFromFile() and multiple NewSQLDbConn() calls are recommended instead.
type ActiveSQLConfig struct {
// contains filtered or unexported fields
}
ActiveSQLConfig represents a SQL configuration that has been activated by registering the TLS configuration (if applicable). It can be used for opening SQL database connections.
func ActivateSQLConfigFromFile(sqlConfigFile string) (*ActiveSQLConfig, error)
Convenience function to parse and activate the SQL configuration file. Certificate paths that aren't absolute are interpreted relative to the directory containing sqlConfigFile.
Opens a connection to the SQL database using the provided configuration. Sets the specified transaction isolation (see link below). https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_tx_isolation
type SQLConfig struct { // DataSourceName is the connection string as required by go-sql-driver: // "[username[:password]@][protocol[(address)]]/dbname"; // database name must be specified, query parameters are not supported. DataSourceName string `json:"dataSourceName"` // TLSDisable, if set to true, uses an unencrypted connection; // otherwise, the following fields are mandatory. TLSDisable bool `json:"tlsDisable"` // TLSServerName is the domain name of the SQL server for TLS. TLSServerName string `json:"tlsServerName"` // RootCertPath is the root certificate of the SQL server for TLS. RootCertPath string `json:"rootCertPath"` // ClientCertPath is the client certificate for TLS. ClientCertPath string `json:"clientCertPath"` // ClientKeyPath is the client private key for TLS. ClientKeyPath string `json:"clientKeyPath"` }
SQLConfig holds the fields needed to connect to a SQL instance and to configure TLS encryption of the information sent over the wire. It must be activated via Activate() before use.
Parses the SQL configuration file pointed to by sqlConfigFile (format described in SqlConfigFileDescription; also see links below). https://github.com/go-sql-driver/mysql/#dsn-data-source-name https://github.com/go-sql-driver/mysql/#tls
func (sc *SQLConfig) Activate(certBaseDir string) (*ActiveSQLConfig, error)
Activates the SQL configuration by registering the TLS configuration with go-mysql-driver (if TLSDisable is not set). Certificate paths from SqlConfig that aren't absolute are interpreted relative to certBaseDir. For more information see https://github.com/go-sql-driver/mysql/#tls
Package dbutil imports 12 packages (graph) and is imported by 4 packages. Updated 2020-10-22. Refresh now. Tools for package owners.