>  기사  >  운영 및 유지보수  >  Linux에 mysql 8.0을 설치하는 방법에 대한 자세한 소개(코드 예)

Linux에 mysql 8.0을 설치하는 방법에 대한 자세한 소개(코드 예)

不言
不言앞으로
2018-12-15 11:05:216723검색

이 기사는 Linux에서 mysql 8.0의 설치 방법(코드 예제)을 자세히 소개합니다. 필요한 친구가 참고할 수 있기를 바랍니다.

mysql 파일을 다운로드한 후 Mysql8.0 설치를 시작할 수 있습니다.

파일 압축 풀기

// 解压文件生成两个xz格式的压缩文件
$ tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar
mysql-router-8.0.13-linux-glibc2.12-x86_64.tar.xz
mysql-test-8.0.13-linux-glibc2.12-x86_64.tar.xz
// 我们需要先删掉/移除原有文件,才可以继续解压,因为解压出来的.tar文件和.tar.xz文件重名
mv mysql-8.0.13-linux-glibc2.12-x86_64.tar ../
xz -d mysql-router-8.0.13-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar
// 为了方便查找,改个名字
mv mysql-8.0.13-linux-glibc2.12-x86_64.tar mysql8

환경 구성

사용자 및 권한 관리를 시작하려면 전용 mysql 프로세스가 필요합니다.

// 创建mysql系统用户和用户组
useradd -r mysql
// 给予安装目录mysql权限
chown mysql:mysql -R mysql8

Mysql 구성 파일이 여러 개 있으므로 수동으로 지정합니다. 많은 매개변수 :

[client]
socket=/home/work/lnmp/mysql8/tmp/mysql.sock
default-character-set=utf8

[mysql]
basedir=/home/work/lnmp/mysql8/
datadir=/home/work/lnmp/mysql8/data/
socket=/home/work/lnmp/mysql8/tmp/mysql.sock
port=3306
user=mysql
# 指定日志时间为系统时间
log_timestamps=SYSTEM
log-error=/home/work/lnmp/mysql8/log/mysql.err
# 指定字符集为utf8,因为mysql8.0中的默认字符集为utfmb4,会和其他程序引起兼容性问题
default-character-set=utf8

[mysqld]
basedir=/home/work/lnmp/mysql8/
datadir=/home/work/lnmp/mysql8/data/
socket=/home/work/lnmp/mysql8/tmp/mysql.sock
port=3306
user=mysql
log_timestamps=SYSTEM
collation-server = utf8_unicode_ci
character-set-server = utf8
# 指定默认认证的加密方式,mysql8.0中默认方式为caching_sha2_password,引起老版本兼容性问题
default_authentication_plugin= mysql_native_password

[mysqld_safe]
log-error=/home/work/lnmp/mysql8/log/mysqld_safe.err
pid-file=/home/work/lnmp/mysql8/tmp/mysqld.pid
socket=/home/work/lnmp/mysql8/tmp/mysql.sock

[mysql.server]
basedir=/home/work/lnmp/mysql8
socket=/home/work/lnmp/mysql8/tmp/mysql.sock

[mysqladmin]                                                                                                                                  
socket=/home/work/lnmp/mysql8/tmp/mysql.sock

여기에 오류 로그의 경로를 지정했습니다. 다음 작업에서는 오류가 발생하면 터미널에 표시되는 오류를 확인하는 것 외에도 오류 로그의 세부 정보를 확인하는 것을 잊지 마세요.

일부 파일을 지정했기 때문에 미리 생성해야 합니다.

mkdir log
touch log/mysql.err
touch log/mysqld_safe.err
mkdir tmp
chown mysql:mysql -R ../*

데이터베이스 초기화

초기화하지 않으면 bin/mysqld_safe를 직접 사용하여 시작하면 오류가 보고됩니다. mysql 환경을 초기화하려면 이때 기사를 참조하세요:

$ bin/mysqld --initialize --user=mysql --basedir=/home/work/lnmp/mysql8/ --datadir=/home/work/lnmp/mysql8/data/
2018-12-13T06:15:03.159123Z 0 [System] [MY-013169] [Server] /home/work/lnmp/mysql8/bin/mysqld (mysqld 8.0.13) initializing of server in progress as process 1190
2018-12-13T06:15:05.255817Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: !/7oy-u%(XfZ
2018-12-13T06:15:06.135143Z 0 [System] [MY-013170] [Server] /home/work/lnmp/mysql8/bin/mysqld (mysqld 8.0.13) initializing of server has completed

프롬프트는 루트 사용자와 임시 비밀번호를 생성했고 초기화가 성공했음을 알려줍니다.

데이터베이스 시작

이제 공식 문서에 따르면 mysqld_safe 명령을 사용하여 시작합니다.

$ bin/mysqld_safe
2018-12-13T06:16:58.604154Z mysqld_safe Logging to '/home/work/lnmp/mysql8/log/mysql.err'.
2018-12-13T06:16:58.629249Z mysqld_safe Starting mysqld daemon with databases from /home/work/lnmp/mysql8/data

데이터베이스 열기

데이터베이스 프로세스가 시작되었으며 mysql을 사용할 수 있습니다. 일반적으로 새 터미널의 데이터베이스:

$ ps aux | grep mysql 
root      2141  0.0  0.0 815844  5328 pts/0    S+   14:16   0:00 /bin/sh bin/mysqld_safe
mysql     2319  1.0  0.5 1997492 374448 pts/0  Sl+  14:16   0:00 /home/work/lnmp/mysql8/bin/mysqld --basedir=/home/work/lnmp/mysql8/ --datadir=/home/work/lnmp/mysql8/data --plugin-dir=/home/work/lnmp/mysql8//lib/plugin --user=mysql --log-error=/home/work/lnmp/mysql8/log/mysql.err --pid-file=/home/work/lnmp/mysql8/tmp/mysqld.pid --socket=/home/work/lnmp/mysql8/tmp/mysql.sock --port=3306
work     25258  0.0  0.0 105356   824 pts/1    S+   14:18   0:00 grep mysql

그러나 오류를 보고하려면 mysql 명령을 직접 사용하십시오.

$ bin/mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

mysql.sock 역할에 대한 설명에 따라 mysql.sock 경로를 지정할 수 있습니다:

bin/mysql -S /home/work/lnmp/mysql8/tmp/mysql.sock -h localhost -uroot -p
Enter password:

Change 초기 비밀번호

데이터베이스를 연 후 사용된 모든 명령은 초기 임시 비밀번호를 수정하라는 메시지를 표시합니다:

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

비밀번호 변경:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.05 sec)

다시 연결하면 새 비밀번호가 적용됩니다.

글로벌 명령어 연결

이때 mysql 호출 시에는 /home/work/lnmp/mysql8/bin/mysql 경로나 상대 경로만 사용할 수 있습니다. 글로벌 명령어로 연결해야 합니다:

$ ln -s /home/work/lnmp/mysql8/bin/mysql /usr/bin/
$ ln -s /home/work/lnmp/mysql8/bin/mysql_safe /usr/bin/

소켓 파일 지정

버전 8.0에서는 my.cnf의 mysql 명령으로 쿼리한 기본 소켓 경로를 수정하기 위해 여러 가지 방법을 시도했지만 여전히 실패했기 때문에 기본 경로에 소켓 파일을 연결해야 했습니다.

ln -s /home/work/lnmp/mysql8/tmp/mysql.sock /tmp/

그런 다음 mysql 명령을 호출하면 오류가 발생하지 않습니다.

데이터베이스 다시 시작

매개변수 디버깅 과정에서 데이터베이스를 다시 시작해야 할 수도 있습니다.

// 杀死进程,相当于停止
cat tmp/mysqld.pid | xargs kill
// 正常启动mysql
bin/mysqld_safe  --defaults-file=/home/work/lnmp/mysql8/my.cnf

사용자 추가 및 권한 부여

mysql8에서는 사용자를 생성하고 값을 할당했으며, 결과는 오류였습니다:

mysql > grant all privileges on *.* to root@localhost indentified by '123456';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'indentified by '123456'' at line 1

인터넷에 따르면 이 정보는 Mysql8이 계정 생성과 권한 부여 작업을 분리하기 때문입니다:

// 创建账户
create user '用户名'@'访问主机' identified by '密码';
// 赋予权限(修改权限时在后面加with grant option)
grant 权限列表 on 数据库 to '用户名'@'访问主机' ;
// 刷新权限
flush privileges;

Summary

파일 압축을 풀고 mysql 사용자 및 사용자 그룹을 생성한 후 my.cnf 구성 파일, 권한 수정, 데이터베이스 초기화 및 시작, 데이터베이스 열기, 초기 비밀번호 변경, 글로벌 명령어 연결, 소켓 파일 경로 지정 등 모든 설치 작업이 완료되었습니다.

위 내용은 Linux에 mysql 8.0을 설치하는 방법에 대한 자세한 소개(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제