golang mysql 插入_Mysql学习(一)添加一个新的用户并用golang操作Mysql

Mysql添加一个新的用户并赋予权限

添加一个自己的用户到mysql

首先我们需要先用root用户登录mysql,但是刚安装完没有密码,我们先跳过密码

ailumiyana@ailumiyana:~/Git_Project/Go_Test$ sudo mysqld_safe --skip-grant-tables

2019-01-07T01:35:51.559420Z mysqld_safe Logging to syslog.

2019-01-07T01:35:51.563797Z mysqld_safe Logging to '/var/log/mysql/error.log'.

root登陆

ailumiyana@ailumiyana:~/Git_Project/Go_Test$ sudo mysql -u root

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.7.24-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

切换数据库, use mysql

mysql> use mysql

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

查看mysql下的表单.

mysql> show tables;

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

| Tables_in_mysql |

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

| columns_priv |

| db |

| engine_cost |

| event |

| func |

| general_log |

| gtid_executed |

| help_category |

| help_keyword |

| help_relation |

| help_topic |

| innodb_index_stats |

| innodb_table_stats |

| ndb_binlog_index |

| plugin |

| proc |

| procs_priv |

| proxies_priv |

| server_cost |

| servers |

| slave_master_info |

| slave_relay_log_info |

| slave_worker_info |

| slow_log |

| tables_priv |

| time_zone |

| time_zone_leap_second |

| time_zone_name |

| time_zone_transition |

| time_zone_transition_type |

| user |

| user_info |

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

32 rows in set (0.00 sec)

查看user表

mysql> desc user;

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

| Field | Type | Null | Key | Default | Extra |

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

| Host | char(60) | NO | PRI | | |

| User | char(32) | NO | PRI | | |

| Select_priv | enum('N','Y') | NO | | N | |

| Insert_priv | enum('N','Y') | NO | | N | |

| Update_priv | enum('N','Y') | NO | | N | |

| Delete_priv | enum('N','Y') | NO | | N | |

| Create_priv | enum('N','Y') | NO | | N | |

| Drop_priv | enum('N','Y') | NO | | N | |

| Reload_priv | enum('N','Y') | NO | | N | |

| Shutdown_priv | enum('N','Y') | NO | | N | |

| Process_priv | enum('N','Y') | NO | | N | |

| File_priv | enum('N','Y') | NO | | N | |

| Grant_priv | enum('N','Y') | NO | | N | |

| References_priv | enum('N','Y') | NO | | N | |

| Index_priv | enum('N','Y') | NO | | N | |

| Alter_priv | enum('N','Y') | NO | | N | |

| Show_db_priv | enum('N','Y') | NO | | N | |

| Super_priv | enum('N','Y') | NO | | N | |

| Create_tmp_table_priv | enum('N','Y') | NO | | N | |

| Lock_tables_priv | enum('N','Y') | NO | | N | |

| Execute_priv | enum('N','Y') | NO | | N | |

| Repl_slave_priv | enum('N','Y') | NO | | N | |

| Repl_client_priv | enum('N','Y') | NO | | N | |

| Create_view_priv | enum('N','Y') | NO | | N | |

| Show_view_priv | enum('N','Y') | NO | | N | |

| Create_routine_priv | enum('N','Y') | NO | | N | |

| Alter_routine_priv | enum('N','Y') | NO | | N | |

| Create_user_priv | enum('N','Y') | NO | | N | |

| Event_priv | enum('N','Y') | NO | | N | |

| Trigger_priv | enum('N','Y') | NO | | N | |

| Create_tablespace_priv | enum('N','Y') | NO | | N | |

| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |

| ssl_cipher | blob | NO | | NULL | |

| x509_issuer | blob | NO | | NULL | |

| x509_subject | blob | NO | | NULL | |

| max_questions | int(11) unsigned | NO | | 0 | |

| max_updates | int(11) unsigned | NO | | 0 | |

| max_connections | int(11) unsigned | NO | | 0 | |

| max_user_connections | int(11) unsigned | NO | | 0 | |

| plugin | char(64) | NO | | mysql_native_password | |

| authentication_string | text | YES | | NULL | |

| password_expired | enum('N','Y') | NO | | N | |

| password_last_changed | timestamp | YES | | NULL | |

| password_lifetime | smallint(5) unsigned | YES | | NULL | |

| account_locked | enum('N','Y') | NO | | N | |

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

45 rows in set (0.03 sec)

查看user中的已存在的用户和主机

mysql> select Host, User from user;

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

| Host | User |

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

| localhost | debian-sys-maint |

| localhost | mysql.session |

| localhost | mysql.sys |

| localhost | root |

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

4 rows in set (0.00 sec)

接着我们新增一个自己的账户使用

mysql> CREATE USER '填用户名'@'localhost' IDENTIFIED BY '填密码';

Query OK, 0 rows affected (0.04 sec)

再次查看user表

mysql> select Host, User from user;

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

| Host | User |

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

| localhost | ailumiyana |

| localhost | debian-sys-maint |

| localhost | mysql.session |

| localhost | mysql.sys |

| localhost | root |

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

5 rows in set (0.00 sec)

给新建的用户添加权限,刷新权限后, 查看新增用户的权限是否已经加进去.

mysql> grant insert,select,delete,update,create,drop on *.* to ailumiyana@"localhost" identified by 'qwedsa';

Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

mysql> show grants for ailumiyana@localhost;

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

| Grants for ailumiyana@localhost |

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

| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON *.* TO 'ailumiyana'@'localhost' |

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

1 row in set (0.00 sec)

当然我们自己用,当然设置所有权限,更为便捷,那么可以改成这样子

all privileges 表示所有权限.

mysql> grant all privileges on *.* to ailumiyana@"localhost" identified by 'qwedsa';

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.01 sec)

mysql> show grants for ailumiyana@localhost;

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

| Grants for ailumiyana@localhost |

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

| GRANT ALL PRIVILEGES ON *.* TO 'ailumiyana'@'localhost' |

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

1 row in set (0.00 sec)

退出,重启服务.

mysql> exit

Bye

ailumiyana@ailumiyana:~/Git_Project/Go_Test$ service mysql restart

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===

Authentication is required to restart 'mysql.service'.

Authenticating as: ailumiyana,,, (ailumiyana)

Password:

==== AUTHENTICATION COMPLETE ===

这样新用户就添加进去了,也配置了适当的权限,接下来用golang简单测试一下。

使用go-sql-driver驱动测试Mysql

先在mysql中创建一个表

mysql> create table user_info(

-> id int(4) not null primary key auto_increment,

-> name char(20) not null);

Query OK, 0 rows affected (0.29 sec)

插入两个数据到user_info表中,然后查询此表。

package main

import (

"github.com/astaxie/beego/logs"

"database/sql"

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

)

func main() {

logs.Debug("main()")

db, err := sql.Open("mysql", "ailumiyana:qwedsa@tcp(127.0.0.1:3306)/mysql")

if err != nil {

logs.Error("sql Open() err", err)

}

stmt, err := db.Prepare("Insert user_info set id=?,name=?")

if err != nil {

logs.Error("sql Prepare() err", err)

}

stmt.Exec(1, "sola")

stmt.Exec(2, "ailumiyana")

rows, err :=db.Query("SELECT * FROM user_info")

if err != nil {

logs.Error("sql Query() err", err)

}

for rows.Next() {

var uid int

var username string

err = rows.Scan(&uid, &username)

if err != nil {

logs.Error("sql rows.Scan() err", err)

}

logs.Debug(uid, username)

}

}

其中sql.Open中的 第二个从参数是DSN格式数据 :

DSN(数据源名称)

数据源名称有一种常见的格式,例如PEAR DB使用的它,但是没有类型前缀(可选部分用方括号标记):

bbc0991e741ec7fc84bb7e4a05cd2839.png

DSN的完整形式:

44fa29bb65391a9cc584389eeb8504c9.png

另外此例用了beego 的日志模块,和go-sql-driver驱动,使用前需要先用go get 下载。

go get可以根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装。在上面这个示例中,我们从著名的代码托管站点Github上下载了一个项目(或称代码包),并安装到了环境变量GOPATH中包含的第一个工作区中。

结果

ailumiyana@ailumiyana:~/Git_Project/Go_Test$ go run mysql.go

2019/01/07 14:38:08.438 [D] main()

2019/01/07 14:38:08.443 [D] 1 sola

2019/01/07 14:38:08.443 [D] 2 ailumiyana

mysql> select * from user_info

-> ;

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

| id | name |

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

| 1 | sola |

| 2 | ailumiyana |

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

2 rows in set (0.02 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算构建基石之Hyper-V:虚拟机管理

本文讲的是云计算构建基石之Hyper-V:虚拟机管理,作为云计算的重要基石,虚拟化技术的好坏起着关键作用。Hyper-V作为微软重要的虚拟化解决技术,在微软云计算构建解决方案中,更是关键至关键,基础之基础。在本系列文章中,…

3GP文件格式分析

1. 概述现在很多智能手机都支持多媒体功能,特别是音频和视频播放功能,而3GP文件格式是手机端普遍支持的视频文件格式。目前很多手机都支持h263视频编码格式的视频文件播放,还有些手机支持h264。音频文件格式普遍支持amr,有些手…

mysql group concat_MySQL 的 GROUP_CONCAT 函数详解

GROUP_CONCAT(expr) 函数会从 expr 中连接所有非 NULL 的字符串。如果没有非 NULL 的字符串,那么它就会返回 NULL。语法如下:GROUP_CONCAT 语法规则它在递归查询中用的比较多,但要使用好它并不容易。所以让我们一起来看看吧:假设有…

光荣之路测试开发面试linux考题之四:性能命令

Hi,大家好我是tom,I am back.今天要给大家讲讲linux系统一些性能相关命令。 1.fdisk 磁盘管理 是一个强大的危险命令,所有涉及磁盘的操作都由该命令完成,包括:新增磁盘、增删改磁盘分区等。 1.fdisk -l 查看磁盘分区情况 Disk /dev/sda: 27.8…

mac安装完mysql后关机特别慢_mysql-Mac终端下遇到的问题总结

为了方便启动mysql服务,修改/etc/.bash_profile文件,如下alias mysql"/usr/local/mysql/bin/mysql"alias mysqladmin"/usr/local/mysql/bin/mysqladmin"或者alias mysqlstart"sudo /usr/local/mysql/support-files/mysql.serve…

sending data mysql slow Mysql查询非常慢的可能原因

1.用explain看看mysql的执行情况,可以得知,task_id扫描了近20万条数据,而且这个task_id不是索引 2.为这个task_id所在的表,将此字段添加索引后,查询就变得很快了 转载于:https://www.cnblogs.com/Skrillex/p/7365590.html

打包上架

昨天写的打包上架,分组到了文章,发现不便查看贴链接到这里: http://www.cnblogs.com/ITCoderW/articles/7597969.html 最近一个版本的审核的过程 当我们上传到APP Store一个新的版本后 登录ITunes Connect就可以看到相应的版本的审核的状态 粗…

架构设计--仅是软件开发之第二大影响力?!

SDWest2006(译注1)对我来说是个有趣的大会。我除了星期三之外(当时我正飞往费城参加一个客户会议 因此错过了Jolt颁奖部分)每天都在演讲。我也参加了一些谈话和会议;其中最引人关注的是Mike Cohn的计划与估算的谈话。…

WiFi密码分享有妙招 不必口头相传

移动互联网的迅速崛起,使得我们可以方便的使用手持移动设备进行上网。尤其是在家庭中,使用智能手机、平板电脑、笔记本电脑等移动设备进行上网和娱乐已经成为主流,台式机上网正日渐式微。在家中时,我们通过无线路由器提供的WiFi网…

javaweb(二十一)——JavaWeb的两种开发模式

一、JSPJavaBean开发模式 1.1、jspjavabean开发模式架构 jspjavabean开发模式的架构图如下图(图1-1)所示 图1-1 在jspjavabean架构中,JSP负责控制逻辑、表现逻辑、业务对象(javabean)的调用。 JSPJavaBean模式适合开发业务逻辑不太复杂的web应…

概率论与数理统计思维导图知识框架_考研概率论与数理统计 综合题型秘籍思维导图① 随机变量1~3章 [21考研上岸之旅]...

Hello World,我的朋友,这里是一颗小白蛋,大千世界,很高兴以这样的方式与你相遇前言在复习过程中发现概率论知识点很少且集中 所以没有分开章节去整理王安式概率论辅导讲义张宇概率论9讲方浩强化班1800题 综合题型秘籍在学习过程中…

php mysql删除失败_php+MySQL实战案例【七】数据编辑、删除

​本节内容中讲解用户管理模块中的修改用户信息和删除用户。修改用户信息:可对选择的用户记录进行编辑,可修改用户名、密码、性别、手机、邮箱和地址信息。删除用户信息:将列表中指定的用户进行删除操作。二、编辑用户信息编辑用户信息&#…

1.three.js世界的4大要素

一、三大组件 在Three.js中,要渲染物体到网页中,我们需要3个组建:场景(scene)、相机(camera)和渲染器(renderer)。有了这三样东西,才能将物体渲染到网页中去。…

架构设计 例子和实践

系统设计说明书(架构、概要、详细)目录结构 虽然这些文档一般来说公司都是有模板的,但我写这些文档以来基本上是每写一次就把目录结构给改一次,应该说这是因为自己对这些文档的理解开始加深,慢慢的越来越明白这些文档的作用和其中需要阐述的东…

activiti 批量 mysql_Activiti6系列(3)- 快速体验

一、部署启动activiti####1、部署,将两个war包拷贝到Tomcat下即可。![](https://img2018.cnblogs.com/blog/1755845/201908/1755845-20190802010532367-2002399291.png)2、启动tomcat,访问http://127.0.0.1:8080/activiti-app默认账号密码:ad…

【启动】Windows上启动图形化软件,报错: 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-1-1-0.dll...

今天在安装了jetbrains官网上的ToolBox软件后,没有办法启动起来,报错如下: 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-1-1-0.dll 尝试重新安装了并没有什么用,现在来解决方法: 直接找到官方的…

论文: YOLO9000-Better,Faster,Stronger

论文阅读: YOLO9000-Better,Faster,Stronger YOLOv2 是经过改造之后的YOLO Batch Normalization:在所有的conv layer后加了BN之后提高了2% mAP,BN可以帮助regularize模型,这样的话就可以放弃 dropout。 High Resolution Classifi…

怎么ie取消要打开或保存来自_取消认证后,发票抵扣就这么简单!

点击标题下「中财讯集团」可快速关注3月1日起,取消增值税发票认证的纳税人范围扩大至全部一般纳税人。一般纳税人可以自愿使用增值税发票选择确认平台查询、选择用于申报抵扣、出口退税或者代办退税的增值税发票信息。具体如何操作呢?掌握以下步骤&#…

好的软件架构设计

什么是架构 前言:软体设计师中有一些技术水平较高、经验较为丰富的人,他们需要承担软件系统的架构设计,也就是需要设计系统的元件如何划分、元件之间如何发生相互作用,以及系统中逻辑的、物理的、系统的重要决定的作出。在很多公…

python线程状态_Python线程

1. 线程基础1.1. 线程状态线程有5种状态,状态转换的过程如下图所示:1.2. 线程同步(锁)多线程的优势在于可以同时运行多个任务(至少感觉起来是这样)。但是当线程需要共享数据时,可能存在数据不同步的问题。考虑这样一种情况:一个列…