mysql的gobye_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使用的它,但是沒有類型前綴(可選部分用方括號標記):
DSN的完整形式:
另外此例用了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)
mysql的gobye_Mysql學習(一)添加一個新的用戶並用golang操作Mysql相关推荐
- mysql操作数据库的步骤,Golang操作MySql数据库的完整步骤记录
前言 MySQL是业界常用的关系型数据库,在平时开发中会经常与MySql数据库打交道,所以在接下来将介绍怎么使用Go语言操作MySql数据库. 下载MySql连接驱动 Go语言中的database/s ...
- golang操作mysql用例
❤️强烈推荐人工智能学习网站❤️ golang操作mysql的demo,直接上代码 package mainimport ("database/sql""fmt" ...
- golang mysql商业用例_完美起航-golang操作mysql用例
golang操作mysql的demo,直接上代码 package main import ( "database/sql" "fmt" _ "gith ...
- 封装一个自己的golang操作MySQL数据库工具
封装一个自己的golang操作MySQL数据库工具 准备工作 导入驱动 连接mysql 增删改查 增 删 改 查 准备工作 首先我们要准备一个写golang的IDE,我用的是goland,还可以用vs ...
- Go语言学习笔记—golang操作MySQL数据库
文章目录 一 准备数据库和表 二 安装配置mysql驱动 三 获得数据库连接 3.1 导入包 3.2 获得连接 3.3 初始化连接 四 插入数据 五 查询数据 5.1 单行查询 5.2 多行查询 六 ...
- golang操作mysql
后台开发语言访问数据库,下面看一下golang访问mysql的常见API. sql.Open() //连接数据库 db.Query() //查询 db.QueryRow() //查询一行 db.Exe ...
- golang mysql 插入_Mysql学习(一)添加一个新的用户并用golang操作Mysql
Mysql添加一个新的用户并赋予权限 添加一个自己的用户到mysql 首先我们需要先用root用户登录mysql,但是刚安装完没有密码,我们先跳过密码 ailumiyana@ailumiyana:~/ ...
- mysql 增加主键列_MySQL添加列、删除列,创建主键等常用操作总结
一. 列常用操作 ① 添加新的一列test_column,并将其作为主键,FIRST将其放在表中第一行,auto_increement是自动增长 alter table test_table add ...
- mysql有则修改无则添加_通过sql实现无则插入有则修改(MySQL)
在实际工作中经常遇到这样的情况,如果传入的数据在数据库中没有记录,那么新增一条数据.如果在数据库中有相应的记录,那么则将对应的记录更新为最新数据. 通常情况下,我们会先通过条件去数据库查一次,根据返回 ...
最新文章
- bootstrapr表格父子框_使用Bootstrap Table建立父子表
- Day 30: Play Framework —— Java开发者的梦想框架
- 常用的加密算法---数字摘要
- ArrayList和LinkedList 的区别
- C#操作类----XmlHelper
- 数字逻辑对偶式_数字电子技术实验——组合逻辑电路的设计
- FastDFS 入门简介
- EditText常用属性总结
- Oracle 项目就是那回事 ----表空间的管理
- 【Python系列】之画BD-RATE及码率波动图示例
- POJ 3168 Barn Expansion (几何+排序)
- 【金融手册】什么是本票、汇票、支票、银行承兑汇票、系统性、非系统性风险、巴塞尔协议、QDII...
- 外显子名词解释_生物信息学常用名词解释(四)
- 法线贴图的实现【OpenGL】
- 用HTML和JavaScript写的RSA加密小工具
- web 系统原理之路由器和交换机的区别
- ctf writeup之程序员密码
- 题目 A : 勇士传说
- 第3章第1节:使用图片来活跃整张幻灯片版面的气氛 [PowerPoint精美幻灯片实战教程]
- 真正的程序员职场高手,都是怎么沟通的?
热门文章
- 由查找算法工程的类图分析组合模式
- Entity Framework 实体框架的形成之旅--利用Unity对象依赖注入优化实体框架(2)
- POJ 2299Ultra-QuickSort
- TCP三次握手四次挥手过程及其中的状态量
- Linux学习之CentOS6下Mysql数据库的安装与配置
- 在Silverlight中进行图片下载
- WinForm数据绑定--BindingContext
- JSTL与JAVA数据交互 pagecontext
- 【Java 基础】字符串(String、StringBuilder),日期(Date、SimpleDateFormat、Calendar)
- 数据库内容集锦(持续更新)