连接数据库的方式有两种:TCP和Unix域socket。

本文使用Unix domain sockets连接数据库。关于TCP连接数据库可以参考Go 操作mysql使用举例

下面例子中,演示了使用show命令查看数据库连接信息的过程。

mysql> show processlist;

+----+------+----------------------+------+---------+------+----------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+----+------+----------------------+------+---------+------+----------+------------------+

| 26 | root | 172.24.232.66:7868 | sys | Query | 0 | starting | show processlist |

+----+------+----------------------+------+---------+------+----------+------------------+

1 row in set (0.00 sec)

代码如下:

package main

import (
"database/sql"
"fmt"
"log" _ "github.com/go-sql-driver/mysql" ) type DBConnectionInfo struct {
ID []byte
User string
Host string
DB []byte
Cmd string
Time []byte
State string
Info []byte
} func(f *DBConnectionInfo) String() string{ return fmt.Sprintf("ID:%s, User:%s, Host:%s, DB:%s, Cmd:%s, Time:%s, State:%s, Info:%s", string(f.ID), f.User, f.Host, string(f.DB), f.Cmd, string(f.Time), f.State, string(f.Info)) } const (
mysqlShowProcessList="show processlist"
)
var DB *sql.DB //var dataBase = "root:Aa123456@unix(/tmp/mysql.sock)/mysql"
var dataBase = "root:Aa123456@unix(/tmp/mysql.sock)/" func Init() {
var err error
DB, err = sql.Open("mysql", dataBase)
if err != nil {
log.Fatalln("open db fail:", err)
} err = DB.Ping()
if err != nil {
log.Fatalln("ping db fail:", err)
}
} func main() { Init() query() } func query() { rows, err := DB.Query(mysqlShowProcessList)
if err != nil {
log.Println("query failed:", err)
return
}
defer rows.Close() for rows.Next(){
data := &DBConnectionInfo{}
if err := rows.Scan(&data.ID, &data.User, &data.Host, &data.DB, &data.Cmd, &data.Time, &data.State, &data.Info); err != nil {
log.Println("Scan failed:", err)
} fmt.Println("data:", data)
} }

output:

data: ID:145, User:root, Host:localhost, DB:, Cmd:Sleep, Time:632, State:, Info:

data: ID:172, User:root, Host:localhost, DB:, Cmd:Query, Time:0, State:starting, Info:show processlist

参考

https://blog.csdn.net/lanyang123456/article/details/79831537

https://www.cnblogs.com/hanyouchun/p/6708037.html

Golang 操作mysql使用举例---连接本地数据库的更多相关文章

  1. navicat for mysql连接本地数据库

    navicat for mysql连接本地数据库 打算使用navicat连接本地数据库,连接的时候,一直连接不上.然后猜想是不是本地数据库没有设置好.输入mysql,出错内容:access denie ...

  2. 错误解决记录------------mysql连接本地数据库显示"can't get hostname for your address"

    mysql连接本地数据库遇到 can't get hostname for your address 不明原因的本地mysql数据库连接不上,总是显示can't get hostname for yo ...

  3. MySQL 连接本地数据库、远程数据库命令

    一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) C:/>mysql -h localhost -u root -p123 二. ...

  4. golang操作mysql数据库

    golang操作mysql数据库 代码: mysql的增.删.改.查 package main import ( "database/sql" "fmt" &q ...

  5. MySQL连接本地数据库时报1045错误的解决方法

     navicat for MySQL 连接本地数据库出现1045错误 如下图:  说明连接mysql时数据库密码错误,需要修改密码后才可解决问题: 解决步骤如下: .首先打开命令行:开始->运行 ...

  6. navicat for MySQL连接本地数据库时报1045错误的解决方法

    navicat for MySQL 连接本地数据库出现1045错误 如下图: 说明连接mysql时数据库密码错误,需要修改密码后才可解决问题: 解决步骤如下: 1.首先打开命令行:开始->运行- ...

  7. [转帖]golang操作mysql使用总结

    golang操作mysql使用总结 https://www.cnblogs.com/hanyouchun/ 讲解的很详细~ 前言 Golang 提供了database/sql包用于对SQL数据库的访问 ...

  8. Oracle 11g安装和PL/SQL连接完全解读(连接本地数据库)

    Oracle安装是很多新手都烦恼的事情,各种奇怪的错误,并且还无从下手解决.我也隔了两年没有用Oracle了,昨天安装了一下,出现很多问题,也很苦恼.现在将安装过程详细记录下来,一来方便自己下次安装, ...

  9. 使用node中mysql模块连接本地数据库

    连接数据库的方法迄今为止学了三种: cmd方式.可视化工具,今天记第三种----node端连接数据库. 一:mysql模块介绍与下载 1.mysql模块是node端专门连接数据库的第三方模块 2.下载 ...

随机推荐

  1. mysql'密码安全

    MYSQL数据库的安全配置 MYSQL密码的修改与恢复 MYSQL数据库密码的修改 Mysql5.7以下默认root登录密码为空,安装完成之后首先需要修改root的登录密码. # mysqladm – ...

  2. 线程简述(Thread)

    线程: 进程是一个正在运行的程序,例如电脑上现在在运行的qq,浏览器,电脑管家,这些都是进程 线程就是每一个进程中的一个执行单元,每一个进程至少一个线程,可以有多个线程,例如浏览器上每一个打开的网页都 ...

  3. Spring Boot 揭秘与实战(五) 服务器篇 - 其他内嵌服务器 发表于 2017-01-03 | Spring框架 | Spri

    文章目录 1. Jetty 的切换 2. Undertow的使用 Spring Boot 可选择内嵌 Tomcat.Jetty 和 Undertow,因此我们不需要以 war 包形式部署项目.< ...

  4. C语音下改变const变量的值的奇葩方法

    恶心,超恶心~~

  5. document.write中输出html标签用法

    输出HTML标签,只需将标签写入双引号: 示例:在网页中输出<p>革命还在继续</p> document.write("<p style='border:1px ...

  6. c++中的stl

    String Vector Set List Map 1.string char* s1 = "Hello SYSU!"; //创建指针指向字符串常量,这段字符串我们是不能修改的 ...

  7. (17)模型层 -ORM之msql 单表的增、删、改、查 及其他操作

    单表操作-增.删.改.查 ret=models.User.objects.filter(id=1)  #这里的结果是一个queryset对象 ret=modles.User.Objects.filte ...

  8. 简单了解version control

    1.什么是版本控制: 版本控制是指对软件开发过程中各种程序代码.配置文件及说明文档等文件变更的管理,是软件管理的核心思想之一 2.版本控制简述 版本控制最主要的功能就是追踪文件的变更.它将什么时候.什 ...

  9. hdu4135 Co-prime 容斥原理

    Given a number N, you are asked to count the number of integers between A and B inclusive which are ...

  10. gxx -L和/etc/ld.so.conf的理解

    编程之路刚刚开始,错误难免,希望大家能够指出. 今天编了个动态库,然后自己测试了一下. 忘记设置程序运行时系统搜索库的路径发生错误: 忘记设置程序编译的时候 -L 指定路径报的错误: -L : 告诉程 ...