|
在Go语言开发中,数据库是支撑应用的核心组件之一。Linux系统因其稳定性和高效性成为开发环境首选,但数据库的部署与配置常让新手望而却步。本文以MySQL和PostgreSQL为例,介绍如何在Linux环境下快速搭建适合Go开发的数据库运行环境,涵盖安装、配置、连接测试及基础优化步骤。
MySQL部署与配置
对于需要兼容性或传统项目的场景,MySQL是常见选择。以Ubuntu 22.04为例,首先通过`apt`安装服务:`sudo apt update \u0026\u0026 sudo apt install mysql-server`。安装完成后运行`sudo mysql_secure_installation`进行安全配置,包括设置root密码、移除匿名用户、禁止远程root登录等。编辑配置文件`/etc/mysql/mysql.conf.d/mysqld.cnf`,调整`bind-address`为`0.0.0.0`允许远程连接(生产环境建议限制IP),并修改`max_connections`参数(默认151)以适应高并发场景。重启服务生效:`sudo systemctl restart mysql`。通过`mysql -u root -p`登录后,创建专用用户和数据库:`CREATE DATABASE go_db; CREATE USER 'go_user'@'%' IDENTIFIED BY 'secure_password'; GRANT ALL PRIVILEGES ON go_db. TO 'go_user'@'%'; FLUSH PRIVILEGES;`。
PostgreSQL部署与配置
面向事务型或需要强数据一致性的场景,PostgreSQL更合适。同样在Ubuntu上,使用`sudo apt install postgresql postgresql-contrib`安装。安装后默认启动服务,可通过`sudo systemctl status postgresql`确认。PostgreSQL采用角色(用户)与数据库分离管理,切换到postgres用户:`sudo -i -u postgres`,进入psql命令行:`psql`。创建用户和数据库:`CREATE DATABASE go_db; CREATE USER go_user WITH PASSWORD 'secure_password'; GRANT ALL PRIVILEGES ON DATABASE go_db TO go_user;`。修改`/etc/postgresql/14/main/postgresql.conf`(版本号可能不同),调整`listen_addresses`为`''`允许远程访问;编辑`/etc/postgresql/14/main/pg_hba.conf`,在文件末尾添加`host all go_user 0.0.0.0/0 md5`以允许密码验证的远程连接。重启服务:`sudo systemctl restart postgresql`。
Go语言连接测试
数据库就绪后,需验证Go程序能否正确连接。以MySQL为例,首先安装驱动:`go get -u github.com/go-sql-driver/mysql`。编写测试代码: ```go package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "go_user:secure_password@tcp(localhost:3306)/go_db") if err != nil { panic(err) } defer db.Close() err = db.Ping() if err != nil { panic(err) } fmt.Println("MySQL连接成功!") } ``` PostgreSQL的驱动使用`github.com/lib/pq`,连接字符串改为`postgresql://go_user:secure_password@localhost:5432/go_db?sslmode=disable`。运行代码后若输出“连接成功”,则环境搭建完成。
基础优化建议
生产环境需进一步优化。对于MySQL,调整`innodb_buffer_pool_size`(建议为物理内存的50%-70%)、`query_cache_size`(MySQL 8.0已移除,需使用其他缓存方案)。PostgreSQL可优化`shared_buffers`(通常设为物理内存的25%)、`work_mem`(复杂查询时临时内存)。定期监控慢查询日志(MySQL的`slow_query_log`,PostgreSQL的`log_min_duration_statement`),使用`EXPLAIN ANALYZE`分析SQL性能。建议配置防火墙仅开放数据库端口(3306/5432),并通过SSL加密连接(PostgreSQL默认启用,MySQL需在配置文件中设置`require_secure_transport=ON`并配置证书)。 (编辑:站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|