데비안 10에 MySQL을 설치하는 방법

골든스톤 프로젝트 1차 챌린지 신청했습니다 - 100,000 상금 풀 공유, 이것은 2번째 글 입니다. 이벤트 세부정보를 보려면 클릭하세요.

개발 머신 드릴

백엔드 프로그래머는 클라우드 개발 머신(AWS, GCP, Azure)이 있으면 매우 만족합니다. 로컬 환경에 영향을 미칠 염려 없이 다양한 테스트를 실행하고 작업을 예약하고 성능을 검증할 수 있습니다. 문제가 있더라도 인스턴스를 파기하고 새 인스턴스를 신청하는 것이 큰 문제입니다.

배우고 성장하는 과정에서 실습을 유지하는 것은 필수 습관입니다. 아무리 들어도 쓰지 않고 실행하지 않으면 깊은 깨달음을 얻을 수 없기 때문입니다. 데이터베이스가 좋은 예입니다. 많은 간단한 KV 저장소, 즉 잘 알려진 관계형 데이터베이스 MySQL 및 PostgreSQL을 언급하지 않더라도 개발 시스템에 간단히 다운로드하여 설치한 다음 디버그하여 많은 시나리오에서 우리의 생각이 올바른지 확인할 수 있습니다. . 저자는 일부 학생들이 고전 데이터베이스 과정을 배우기 위해 열심히 노력하는 것을 보았고 마침내 강의 및 PDF 노트만 읽는 것을 발견했는데 이러한 학습의 결과는 상상할 수 있습니다.

듣고, 보고, 사용하고, 보완하면 차근차근 사용법을 이해할 수 있고 마지막에는 원리를 천천히 이해할 수 있습니다. 특히 데이터베이스 기반 시리즈에서는 모든 리소스가 공개되어 있으며, 계속해서 성장하는 백엔드 엔지니어로서 이를 잘 활용해야 합니다. 관계형 데이터베이스가 무엇인지, MySQL과 PostgreSQL의 차이점은 무엇이며 SQLite는 이러한 기능을 어떻게 지원하는지 생각해 보십시오.

서로 다른 데이터베이스에서 동일한 SQL의 실행 결과가 얼마나 차이가 나는지, 구문이 다른지 여부입니다. 각각은 실제로 사례를 구성하고 실행 후에만 결과를 알도록 요구합니다. 이것은 어떤 칼럼이나 코스가 제공할 수 있는 것이 아닙니다. 개인적인 경험을 통해서만 우리는 프로덕션 환경에서 MySQL의 단일 테스트 조롱을 수행하기 위해 SQLite를 사용하는 것이 신뢰할 수 있는지 여부를 알 수 있습니다.

요컨대, 시작하는 습관을 들이고, 클라우드 벤더 플랫폼에 개발머신(EC2)을 신청하고, 배우고 싶은 구성요소(MySQL, Redis, PostgreSQL, SQLite 등)를 설치하고, 연습을 시작하고, 확인 중 .

최근에 몇몇 친구들이 Linux Debian에 MySQL을 설치하는 데 많은 문제를 겪었다는 것을 종종 봅니다. 특히 그들은 잘못 인도되어 MariaDB를 설치했습니다. 오늘은 데비안을 기반으로 MySQL 서버를 설치하는 방법에 대해 알아보겠습니다.

MariaDB와 MySQL

Debian 10에서 MySQL 프로젝트의 커뮤니티 포크인 MariaDB는 기본 MySQL 변형으로 패키지됩니다. MariaDB는 대부분의 경우 잘 작동하지만 Oracle의 MySQL에만 있는 기능이 필요한 경우 MySQL 개발자가 유지 관리하는 저장소에서 패키지를 설치하고 사용할 수 있습니다.

MySQL은 실제로 Oracle에서 유지 관리하는 데이터베이스이고 MariaDB는 MySQL을 기반으로 하는 커뮤니티 포크 제품이라는 것을 알고 있습니다. Debian 10에서 기본 MySQL은 실제로 MariaDB입니다.

이것이 로 apt-cache search mysql-server검색 일련의 MariaDB 패키지를 얻는 이유입니다.

이미지.png

그러나 다시 배워야하기 때문에 주류를 먼저 유지하기를 희망합니다. 그렇지 않으면 MariaDB와 MySQL의 차이로 인한 것인지 판단할 수 없습니다. 따라서 여전히 정품 MySQL을 설치해야 합니다.

설치 패키지 다운로드

Oracle의 데비안 패키지를 사용하여 Linux에 MySQL 설치의 공식 설치 가이드를 참조 하여 APT Repository에서 다운로드하도록 선택합니다. MySQL APT 저장소를 클릭하십시오 .

이미지.png

MySQL 已经为我们提供了一个 Debian 的 Deb 包,通常是十几 K。我们选择 download。

此时会挑出来一个页面,要求我们登录或注册,忽略即可。

이미지.png

由于我们是开发机,没有 GUI 页面,这里其实我们真正需要的只是个下载链接。注意下面的 No thanks, just start my download,右键复制即可。

이미지.png

我这里拿到的链接是: dev.mysql.com/get/mysql-a…

下来我们登录开发机,通过 wget 拿到这个包。

wget https://dev.mysql.com/get/mysql-apt-config_0.8.23-1_all.deb
复制代码

这样就下载到本地了,大家可以 ls 一下看看。

使用 dpkg 进行安装

dpkg is the software at the base of the package management system in the free operating system Debian and its numerous derivatives. dpkg is used to install, remove, and provide information about .deb packages. dpkg itself is a low-level tool.

dpkg 是 Debian 系统中对 .deb 格式文件的一个安装管理器。它能够帮助我们安装,卸载,以及获取 deb 包的一些信息。

我们运行 dpkg --help 就能看到相关的用法,本次我们只需要使用安装能力,用 -i 即可。

$ dpkg --help
Usage: dpkg [<option> ...] <command>

Commands:
  -i|--install       <.deb file name>... | -R|--recursive <directory>...
  --unpack           <.deb file name>... | -R|--recursive <directory>...
  -A|--record-avail  <.deb file name>... | -R|--recursive <directory>...
  --configure        <package>... | -a|--pending
  --triggers-only    <package>... | -a|--pending
  -r|--remove        <package>... | -a|--pending
  -P|--purge         <package>... | -a|--pending
  -V|--verify [<package>...]       Verify the integrity of package(s).
  --get-selections [<pattern>...]  Get list of selections to stdout.
  --set-selections                 Set package selections from stdin.
  --clear-selections               Deselect every non-essential package.
  --update-avail [<Packages-file>] Replace available packages info.
  --merge-avail [<Packages-file>]  Merge with info from file.
  --clear-avail                    Erase existing available info.
  --forget-old-unavail             Forget uninstalled unavailable pkgs.
  -s|--status [<package>...]       Display package status details.
  -p|--print-avail [<package>...]  Display available version details.
  -L|--listfiles <package>...      List files 'owned' by package(s).
  -l|--list [<pattern>...]         List packages concisely.
  -S|--search <pattern>...         Find package(s) owning file(s).
  -C|--audit [<package>...]        Check for broken package(s).
  --yet-to-unpack                  Print packages selected for installation.
  --predep-package                 Print pre-dependencies to unpack.
  --add-architecture <arch>        Add <arch> to the list of architectures.
  --remove-architecture <arch>     Remove <arch> from the list of architectures.
  --print-architecture             Print dpkg architecture.
  --print-foreign-architectures    Print allowed foreign architectures.
  --assert-<feature>               Assert support for the specified feature.
  --validate-<thing> <string>      Validate a <thing>'s <string>.
  --compare-versions <a> <op> <b>  Compare version numbers - see below.
  --force-help                     Show help on forcing.
  -Dh|--debug=help                 Show help on debugging.

  -?, --help                       Show this help message.
      --version                    Show the version.

Assertable features: support-predepends, working-epoch, long-filenames,
  multi-conrep, multi-arch, versioned-provides.

Validatable things: pkgname, archname, trigname, version.

Use dpkg with -b, --build, -c, --contents, -e, --control, -I, --info,
  -f, --field, -x, --extract, -X, --vextract, --ctrl-tarfile, --fsys-tarfile
on archives (type dpkg-deb --help).

Options:
  --admindir=<directory>     Use <directory> instead of /var/lib/dpkg.
  --root=<directory>         Install on a different root directory.
  --instdir=<directory>      Change installation dir without changing admin dir.
  --path-exclude=<pattern>   Do not install paths which match a shell pattern.
  --path-include=<pattern>   Re-include a pattern after a previous exclusion.
  -O|--selected-only         Skip packages not selected for install/upgrade.
  -E|--skip-same-version     Skip packages whose same version is installed.
  -G|--refuse-downgrade      Skip packages with earlier version than installed.
  -B|--auto-deconfigure      Install even if it would break some other package.
  --[no-]triggers            Skip or force consequential trigger processing.
  --verify-format=<format>   Verify output format (supported: 'rpm').
  --no-debsig                Do not try to verify package signatures.
  --no-act|--dry-run|--simulate
                             Just say what we would do - don't do it.
  -D|--debug=<octal>         Enable debugging (see -Dhelp or --debug=help).
  --status-fd <n>            Send status change updates to file descriptor <n>.
  --status-logger=<command>  Send status change updates to <command>'s stdin.
  --log=<filename>           Log status changes and actions to <filename>.
  --ignore-depends=<package>,...
                             Ignore dependencies involving <package>.
  --force-...                Override problems (see --force-help).
  --no-force-...|--refuse-...
                             Stop when problems encountered.
  --abort-after <n>          Abort after encountering <n> errors.

Comparison operators for --compare-versions are:
  lt le eq ne ge gt       (treat empty version as earlier than any version);
  lt-nl le-nl ge-nl gt-nl (treat empty version as later than any version);
  < << <= = >= >> >       (only for compatibility with control file syntax).

Use 'apt' or 'aptitude' for user-friendly package management.
复制代码

这里我们在安装目录下执行:

sudo dpkg -i mysql-apt-config_0.8.23-1_all.deb
复制代码

表示我们希望用 dpkg 来安装刚刚下载的 deb 包。

이미지.png

安装过程中,dpkg 会询问我们是否需要对安装进行一些自定义的配置,我们直接全选 OK 即可,保持默认设置。此时默认希望安装的包就是最新的 MySQL stable 版本。

执行完毕后,我们需要刷新一下 apt 的缓存,让我们可以用 apt 命令找到我们刚刚添加的包。

sudo apt update
复制代码

至此,我们添加了 MySQL 包,并可以通过 apt 工具来安装,如果还需要再次配置,可以使用 sudo dpkg-reconfigure mysql-apt-config 命令选择配置,然后 sudo apt-get update 刷新下缓存即可。

安装 MySQL server

我们可以用 sudo systemctl status mysql 来检验是否存在 mysql 进行运行,此时我们先运行一次,会发现没有任何进程输出。符合预期。

下来我们用 apt 来安装 server

sudo apt install mysql-server
复制代码

这里会要求你输入 root 密码,二次确认。鉴权插件大家看自己的场景,如果你不确定,直接选择 Use Strong Password Encryption 就好,这样更安全。

安装完成后,我们再次运行sudo systemctl status mysql,你会发现,此时 server 已经开始跑了。

이미지.png

关注这里 Active: active (running) 即可,这里就标识我们进程的状态。

验证安装

安装完成后,我们来看看版本。

运行 mysqladmin -u root -p version,输入你的密码,就能看到我们安装的版本了。

이미지.png

可以看到,我们的 MySQL 是 8.0.30,跟下载的包一致。这里还是给出 uptime 的时间,以及其他状态信息。

连接 MySQL

安装之后,我们来试试看,既然开发机已经有了 MySQL server 运行,连上去看看效果,以后就可以走 cli 工具很简洁地基于开发机上的 MySQL 来做测试,而不用担心污染生产环境的数据库了。

登录方法很简单,目前选择 user 为 root,我们运行

mysql -u root -p
复制代码

输入密码后就登录成功了,此时 cli 帮助我们创建了一个连接。

이미지.png

我们看一下目前内置的库有哪些。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)
复制代码

端口默认还是 3306,所以我们写代码的时候可以直接走 localhost:3306 来连接

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.01 sec)
复制代码

여기에서 우리는 자유롭게 비행하고 다양한 테스트 테이블을 만들고 다양한 시나리오의 사례를 확인할 수 있습니다. 그것은 모두 당신에게 달려 있습니다.

참고문헌

추천

출처juejin.im/post/7143060333194641439