Golang中如何使用登录功能访问MySQL Workbench数据库

Golang中如何使用登录功能访问MySQL Workbench数据库 我已经创建了一个MySQL Workbench数据库,想要使用登录字段来访问该数据库。 如何创建一个使用用户名和密码的登录字段来进入MySQL Workbench数据库? 我希望在不使用HTTP网页应用的情况下实现,只用纯Golang语言。

  1. 输入用户名 > (如果输入的用户名错误,显示"未找到匹配项") >> 再次询问"输入用户名" >> 循环直到找到正确的用户名

  2. 输入密码 > (如果用户名正确,则要求输入密码) >> (如果输入的密码错误,显示"密码错误")

再次询问"输入密码" >> 循环直到找到正确的密码

  1. 连接到MySQL Workbench打开数据库

提前感谢。


更多关于Golang中如何使用登录功能访问MySQL Workbench数据库的实战教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

我不太理解你的问题。你使用 MySQL Workbench 工具创建了一个 MySQL 数据库,对吗?你打算开发一个命令行应用程序吗?你尝试过什么操作,在哪个环节遇到了问题?

更多关于Golang中如何使用登录功能访问MySQL Workbench数据库的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


如果你想知道如何从命令行读取文本,可以使用 fmt.Scanln,如下例所示。

package main

import (
	"fmt"
)

func main() {
	var x string
	fmt.Print("Enter text:")
	fmt.Scanln(&x)
	fmt.Println(x)
}

补充说明:对于读取密码,我发现了这个项目。

我正在尝试编写一个Go语言程序,首先会要求输入用户名 >> 输入用户名

第二个问题是输入与相应用户名匹配的密码 >> 输入密码

最后如果密码输入正确,就可以连接对应的MySQL数据库。

示例:

db, err := sql.Open("mysql", "admin:admin@tcp(127.0.0.1:3306)/")
if err != nil {
panic(err)
}
defer db.Close()

MySQL数据已经创建并包含多个表。这是用于命令行应用程序的。

在Golang中实现MySQL数据库的登录验证,可以通过标准输入获取用户凭据,然后使用database/sql包和MySQL驱动进行验证。以下是完整的实现方案:

package main

import (
	"bufio"
	"database/sql"
	"fmt"
	"os"
	"strings"

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

type UserCredentials struct {
	Username string
	Password string
}

func main() {
	// 获取用户名
	username := getUsername()
	
	// 获取密码
	password := getPassword()
	
	// 尝试连接数据库
	db, err := connectToDatabase(username, password)
	if err != nil {
		fmt.Printf("数据库连接失败: %v\n", err)
		return
	}
	defer db.Close()
	
	fmt.Println("成功连接到MySQL数据库!")
	
	// 这里可以继续执行数据库操作
	// 例如:查询数据库列表
	rows, err := db.Query("SHOW DATABASES")
	if err != nil {
		fmt.Printf("查询失败: %v\n", err)
		return
	}
	defer rows.Close()
	
	fmt.Println("可用的数据库:")
	for rows.Next() {
		var dbName string
		if err := rows.Scan(&dbName); err != nil {
			fmt.Printf("读取数据失败: %v\n", err)
			return
		}
		fmt.Printf("- %s\n", dbName)
	}
}

func getUsername() string {
	scanner := bufio.NewScanner(os.Stdin)
	
	for {
		fmt.Print("输入用户名: ")
		scanner.Scan()
		username := strings.TrimSpace(scanner.Text())
		
		if username != "" {
			return username
		}
		fmt.Println("未找到匹配项")
	}
}

func getPassword() string {
	scanner := bufio.NewScanner(os.Stdin)
	
	for {
		fmt.Print("输入密码: ")
		scanner.Scan()
		password := strings.TrimSpace(scanner.Text())
		
		if password != "" {
			return password
		}
		fmt.Println("密码错误")
	}
}

func connectToDatabase(username, password string) (*sql.DB, error) {
	// 构建MySQL连接字符串
	// 格式: "username:password@tcp(host:port)/database"
	// 根据你的MySQL Workbench配置修改以下参数
	dsn := fmt.Sprintf("%s:%s@tcp(localhost:3306)/", username, password)
	
	// 连接数据库
	db, err := sql.Open("mysql", dsn)
	if err != nil {
		return nil, err
	}
	
	// 验证连接
	err = db.Ping()
	if err != nil {
		return nil, err
	}
	
	return db, nil
}

在使用前,需要先安装MySQL驱动:

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

重要配置说明:

  1. 连接参数调整:根据你的MySQL Workbench配置修改connectToDatabase函数中的连接字符串:

    • localhost:3306 - 替换为你的MySQL服务器地址和端口
    • 如果需要连接特定数据库,在DSN末尾添加数据库名,例如:"/mydatabase"
  2. 验证逻辑增强:如果需要更严格的用户名验证,可以修改getUsername函数来检查预定义的用户名列表:

func getUsername() string {
	scanner := bufio.NewScanner(os.Stdin)
	validUsers := []string{"admin", "user", "test"} // 预定义的有效用户名
	
	for {
		fmt.Print("输入用户名: ")
		scanner.Scan()
		username := strings.TrimSpace(scanner.Text())
		
		for _, validUser := range validUsers {
			if username == validUser {
				return username
			}
		}
		fmt.Println("未找到匹配项")
	}
}

这个实现通过命令行交互获取用户名和密码,然后使用这些凭据建立MySQL数据库连接。连接成功后,程序会显示可用的数据库列表作为验证。

回到顶部