创建数据库、用户以及修改密码

在终端中输入命令,启动数据库:

service mysql start

以下是在MySql中执行的操作。
为防止修改系统的数据库,我们需要新建一个新的数据库:

CREATE DATABASE test_db;

切换到新建的数据库:

use test_db;

在该数据库中新建一个表单,其中uid是自动增长的主键:

CREATE TABLE "userinfo" ('uid' INT(10) NOT NULL AUTO_INCREMENT,'username' VARCHAR(64) NULL DEFAULT NULL,'departname' VARCHAR(64) NULL DEFAULT NULL,'created' DATE NULL DEFAULT NULL,PRIMARY KEY('uid')
)

新建一个用户,赋予该用户在test_db上操作的权利,尽量不要使用root进行操作,以免误删除有关的数据,新建用户一般使用root的身份,先切换数据库:

use mysql;

test_db新建用户:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROPON test_db.user TO 'guest@localhost' IDENTIFIED BY '123';

其中用户名是guest,所有权属于localhost,123表示密码。

如果想要修改密码:

use mysql;

在mysql5.7以及以后,需要修改authentication_string属性:

update mysql.user set authentication_string=password("123") where user="guest" and host="localhost";

然后刷新权限:

flush privileges;

在Golang中调用

Golang中仅仅定义了接口,没有具体实现mysql的驱动,因此我们使用github上最流行的一个库:

go get -u github.com/go-sql-driver/mysql

这样,就会把该包添加到你之前定义GOPATH中。

然后在代码中需要单独引入包:

import _ "github.com/go-sql-driver/mysql"

_表示可以使用包中所有的成员,而不用添加包名。

使用Open()函数建立链接,先给出Open函数的参数类型:

user@unix(/path/to/socket)/dbname?charset=utf8  // unix系统的,我一般不用
user:password@tcp(localhost:5555)/dbname?charset=utf8 // 涉及到远程链接调用的
user:password@/dbname  // 本地使用的
user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname // 涉及到IPV6的

如果需要检测mysql的监听地址,则需要在shell中输入:

 cat /etc/services | grep mysql

之后会看到输出(以自己的计算机的为准):

mysql        3306/tcp
mysql       3306/udp
mysql-proxy 6446/tcp            # MySQL Proxy
mysql-proxy 6446/udp

下面给出代码:

package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql"
)// 错误检测函数
func checkErr(err error) {if err != nil {panic(err)}
}func use_sql() {// 建立数据库链接,下面两种方式都可以//  db, err := sql.Open("mysql", "guest:123@tcp(localhost:3306)/test_db?charset=utf8")db, err := sql.Open("mysql", "guest:123@/test_db?charset=utf8")checkErr(err)// 插入数据,返回准备状态stmtstmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")checkErr(err)// 执行状态,注意不能出现中文,暂时还未解决,里面顺序地包含对应的参数res, err := stmt.Exec("guest", "study part", "2012-12-09")checkErr(err)// 数返回由数据库执行插入操作得到的自增 ID 号id, err := res.LastInsertId()checkErr(err)fmt.Println(id)// 返回更新数据的准备状态stmt, err = db.Prepare("UPDATE userinfo set username=? where uid=?")checkErr(err)// 执行状态,里面顺序的包含执行状态res, err = stmt.Exec("guest_update", id)checkErr(err)// 返回 query 操作影响的数据条目数。affect, err := res.RowsAffected()checkErr(err)fmt.Println(affect)// 查询数据,返回一个迭代器rows, err := db.Query("SELECT * FROM userinfo")// rows相当于执行迭代器,到末尾后自动关闭for rows.Next() {var uid intvar username stringvar department stringvar created string// 把数据读取出到相应的变量中err = rows.Scan(&uid, &username, &department, &created)checkErr(err)fmt.Println(uid)fmt.Println(username)fmt.Println(department)fmt.Println(created)}// 删除数据,返回执行状态stmt, err = db.Prepare("DELETE FROM userinfo WHERE uid=?")checkErr(err)// 传递参数res, err = stmt.Exec(id)checkErr(err)// 返回执行删除操作后影响的行数affect, err = res.RowsAffected()checkErr(err)fmt.Println(affect)db.Close() // 关闭数据库
}func main() {use_sql()
}

输出结果:

2
1
1
guest_update
study part
2012-12-09
2
guest_update
study part
2012-12-09
1

Golang连接使用MySql5.7数据库完整步骤相关推荐

  1. mysql操作数据库的步骤,Golang操作MySql数据库的完整步骤记录

    前言 MySQL是业界常用的关系型数据库,在平时开发中会经常与MySql数据库打交道,所以在接下来将介绍怎么使用Go语言操作MySql数据库. 下载MySql连接驱动 Go语言中的database/s ...

  2. 如何通过golang 连接阿里云的redis实例(golang带账号密码访问redis)

    前言: 随着云技术和5G的到来,高并发.低延时.高扩展的需求必定会越来越高.并且现在的云技术实在超过了绝大多数小公司的技术积累,所以笔者认为将来必定会越来越多的公司会将自己的业务挪到云上来,也就是说将 ...

  3. Centos7安装mysql5.6的步骤

    Centos7安装mysql5.6的步骤 一.安装mysql 1.下载mysql5.6的tar.gz压缩包 从mysql官网下载压缩包 mysql-advanced-5.6.24-linux-glib ...

  4. MySQL5.7安装步骤

    2019独角兽企业重金招聘Python工程师标准>>> MySQL5.7安装步骤 MySQL-installer-community-5.7.9.1各版本相关说明: mysql-in ...

  5. golang 接口_「实战」助力数据库开发之接口篇 - Golang 连接 Greenplum

    Greenplum 作为一款强大的 HTAP 数据库,针对大多数流行语言都有相应的连接库.大部分均是与 PostgreSQL 采用相同的接口,但是也有部分接口是 Greenplum 专门优化后用于自身 ...

  6. 64位oracle客户端_开发小记-golang连接Oracle数据库配置

    项目需求golang连接Orale数据库,使用mattn/go-oci8包,github地址 https://github.com/mattn/go-oci8 过程 Oracle Client和SDK ...

  7. 英雄联盟修复返回服务器异常,玩LOL英雄联盟在XP中服务器连接异常退出的恢复步骤...

    LOL英雄联盟是很多的喜欢网友的小伙伴在安装的游戏软件,对于一些电脑配置低的可以玩的不是很顺畅的,有小伙伴在XP系统的电脑中安装了LOL英雄联盟以后出错服务器连接异常不能登录的情况,遇到这样的问题我们 ...

  8. golang连接mysql操作示例增删改查

    golang本身没有提供连接mysql的驱动,但是定义了标准接口供第三方开发驱动.这里连接mysql可以使用第三方库,第三方库推荐使用https://github.com/Go-SQL-Driver/ ...

  9. mysql5.7java安装步骤_MySQL5.7安装步骤

    MySQL5.7安装步骤 MySQL-installer-community-5.7.9.1各版本相关说明: mysql-installer-web-community-5.7.9.0 : 有web标 ...

最新文章

  1. Fuzzy Hashing 算法工具ssdeep 使用
  2. C++ pair的使用
  3. RDD 与 DataFrame原理-区别-操作详解
  4. 让SignalR客户端回调支持强类型
  5. win10中linux系统下载软件,win10 上安装 Debian Linux子系统
  6. 13个美国大学生最常用的社交网络
  7. pku 3683 Priest John's Busiest Day 2-sat判断有误解+输出可行解
  8. python 字符编码、格式化
  9. 为什么每次进入命令都要重新source /etc/profile 才能生效?
  10. Python字符的转义
  11. webapi 给自己挖的坑
  12. WIN10-x86虚拟机镜像-32位-VMware(亲测可用)
  13. 即将截止?四川省2022年工业领域大企业大集团跨越发展激励项目申报条件、材料、要求及流程
  14. LeetCode 字典序排数(最优解法,不接受反驳)
  15. 如果你的天猫魔盒不能看了
  16. druid 查条数_Druid.io查询分析
  17. 微信公众号之接入服务器
  18. 如何修改安卓软件的图标和名字
  19. 利用TrinityCore 框架的搭建魔兽世界私服
  20. 汽车保养知识知多少?这篇文章让你秒懂

热门文章

  1. Junit使用方法总结
  2. 【less-6】sqli-labs靶场第六关(类似less-5)
  3. 使用RDKit将pdb文件转成SMILES
  4. [转]香农信息论与毒药称球问题
  5. c/c++教程 - 1.4 数据类型 sizeof
  6. Arm TrustZone 学习 - 0.2 Qemu - OPTEE 虚拟运行环境搭建
  7. IntellijIDEA配置Tomcat
  8. sql语句中 and 与or 的优先级
  9. CentOS配置服务开机自启
  10. MySQL建立双向主备复制server配置方法