美文网首页
【Go Web开发】数据库安装与配置

【Go Web开发】数据库安装与配置

作者: Go语言由浅入深 | 来源:发表于2022-01-26 20:58 被阅读0次

    备注:【Go Web开发】是一个从零开始创建关于电影管理的Web项目。

    接下来的内容,我们将继续我们的项目,构建并设置一个SQL数据库来持久存储客户端发送的movie数据。

    这里我们将使用PostgreSQL数据库。它是开源的,非常可靠,并且具有一些独特的新特性——包括支持数组和JSON数据类型、全文搜索和地理空间查询。在项目开发过程中,我们将使用这些新的PostgreSQL特性。

    接下来的内容你将学习:

    • 如何在自己机器上安装和设置PostgreSQL。
    • 如何使用psql交互式工具创建数据库,PostgreSQL扩展和用户帐户。
    • 如何在Go中初始化数据库连接池并修改配置以提高性能和稳定性。

    配置PostgreSQL数据库

    安装PostgreSQL数据库

    如果您跟随本系列文章步骤操作,那么此时您需要在计算机上安装PostgreSQL。官方的PostgreSQL文档包含了所有类型操作系统的下载和安装说明,但如果你使用的是macOS,你应该能够使用brew安装:

    $ brew install postgresql
    

    如果您使用的是Linux发行版,您应该能够通过包管理器来安装它。例如,如果你的操作系统支持apt包管理器(像Debian和Ubuntu一样),你可以这样安装:

    $ sudo apt install postgresql
    

    在Windows机器上,你可以使用Chocolatey包管理器安装PostgreSQL:

    > choco install postgresql
    

    命令行连接PostgreSQL

    当PostgreSQL被安装的时候,你的计算机上应该已经创建了一个psql二进制文件。它包含一个基于终端的命令行工具,用于与PostgreSQL数据库交互。

    你可以通过在你的终端上运行psql --version命令来检查它是否可用,如下所示:

    $ psql --version
    psql (PostgreSQL) 13.4
    

    如果您还不熟悉PostgreSQL,那么第一次使用psql连接到它的过程可能有点不直观。让我们花点时间来解释一下。

    当PostgreSQL刚安装时,它只有一个用户:一个叫做postgres的超级用户。在第一次使用时,我们需要以该超级用户身份连接到PostgreSQL来做任何操作-此时我们可以执行任何需要的设置,如创建数据库和创建其他用户。

    在安装期间,已经在您的机器上创建一个名为postgres的操作系统用户。在基于unix的系统上,你可以检查/etc/passwd文件来确认这一点,像这样:

    $ cat /etc/passwd|grep 'postgres'
    _postgres:*:216:216:PostgreSQL Server:/var/empty:/usr/bin/false
    

    这很重要,因为默认情况下,PostgreSQL使用对等认证(peer authentication)的身份验证方案,对来自本地机器的任何连接进行验证。对等认证是指如果当前操作系统用户的用户名与一个有效的PostgreSQL用户名匹配,可以作为该用户登录PostgreSQL,而无需进一步认证。不涉及密码。

    因此,如果我们切换到名为postgres的操作系统用户,我们应该能够使用psql连接到PostgreSQL,而不需要任何进一步的身份验证。事实上,你可以用下面的命令一步完成这两件事:

    $ sudo -u postgres psql
    psql (13.4)
    Type "help" for help.
    
    postgres=# 
    

    因此,为了确认一下,我们在这里使用sudo命令(superuser do)以操作系统用户postgres的身份运行psql命令。这将在在终端打开一个会话,以PostgreSQL超级用户(称为postgres)进行身份验证。

    你可以通过运行“SELECT current_user”来确认你当前是哪个PostgreSQL用户:

    postgres=# SELECT current_user;
    current_user 
    --------------
    postgres 
    (1 row)
    

    创建数据库,用户和扩展

    当我们以postgres超级用户的身份连接时,可以为我们的项目创建一个名为greenlight的新数据库,然后使用\c命令连接到数据库,如下所示:

    postgres=# create database greenlight;
    CREATE DATABASE
    postgres=# \c greenlight
    You are now connected to database "greenlight" as user "postgres".
    

    在PostgreSQL中,\字符表示元命令。其他一些有用的元命令有\l用于列出所有数据库,\dt用于列出表,以及\du用于列出用户。你还可以运行?查看可用元命令的完整列表。

    现在我们的greenlight数据库已经存在并连接到它,有两个任务需要完成。

    第一个任务是创建一个没有超级用户权限的新用户greenlight,我们可以使用该用户执行SQL迁移并从Go应用程序连接到数据库。我们希望将这个新用户设置为使用基于密码的身份验证,而不是对等身份验证。

    PostgreSQL也有扩展的概念,它在标准功能的基础上增加额外的功能。PostgreSQL附带的扩展列表可以在这里找到,还有一些其他扩展你可以单独下载。

    在这个项目中,我们将使用citext扩展。该扩展给PostgreSQL添加了区分大小写的字符串类型,我们将在本书后面使用它来存储用户邮件地址。需要注意的是,扩展只能由超级用户添加到特定的数据库中。

    继续,并运行以下命令来创建一个新的greenlight用户与特定的密码,并添加citext扩展到我们的数据库:

    greenlight=# CREATE ROLE greenlight WITH LOGIN PASSWORD 'pa55word';
    CREATE ROLE
    greenlight=# CREATE EXTENSION IF NOT EXISTS citext;
    CREATE EXTENSION
    

    重要提示:如果您按照此方法进行操作,请务必记住您为greenlight用户设置的密码。在接下来的步骤中您需要使用。

    一旦成功完成以上操作,您可以键入exit或\q来关闭终端与数据库连接,并恢复为您的正常操作系统用户。

     greenlight=# exit
    

    以新用户连接数据库

    在进行进一步操作之前,让我们证明之前的操作都设置正确,并尝试以greenlight用户连接到greenlight数据库。出现提示时,输入在上面步骤中设置的密码。

    $ psql --host=localhost --dbname=greenlight --username=greenlight
    Password for user greenlight:
    psql (13.4)
    SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help.
    greenlight=> SELECT current_user;
    current_user --------------
    greenlight (1 row)
    greenlight=> exit
    

    很好!这确认了我们的数据库和带有密码验证的新用户greenlight可以正常使用,并且我们能够以该用户执行SQL语句。

    附加内容

    优化PostgreSQL设置

    PostgreSQL的默认设置是相当保守的,通常可以通过调整PostgreSQL.conf文件中的值来提高数据库的性能。

    你可以通过下面的SQL查询来检查postgresql.conf文件的位置:

    $ sudo -u postgres psql -c 'SHOW config_file;'
                    config_file   
    --------------------------------------------
     /opt/homebrew/var/postgres/postgresql.conf
    (1 row)
    

    这篇文章地介绍了一些最重要的PostgreSQL配置,并指导哪些值可以作为合理的配置。如果你对优化PostgreSQL感兴趣,我建议你读一读这篇文章。

    或者,您可以使用这个基于web的工具来根据你的系统硬件生成推荐配置。这个工具的特点是输出"ALTER SYSTEM" SQL语句,你可以运行它来改变你的数据库设置,而不是手动修改postgresql.conf文件。

    相关文章

      网友评论

          本文标题:【Go Web开发】数据库安装与配置

          本文链接:https://www.haomeiwen.com/subject/ananhrtx.html