美文网首页
linux 安装 mysql8.

linux 安装 mysql8.

作者: _大叔_ | 来源:发表于2020-07-16 15:12 被阅读0次

建议看完文章再装,不一定适合所有。

一、根据自己的Linux去下载相对因的版本,一般都是红帽的。

下载地址这个是官方文档,告诉你如何再Linux上安装mysql

二、开始安装

个人不太喜欢用yum安装,就是yum安装找不到路径,对于我这种半吊子,我还是喜欢 tar 的文件。

下载合适的版本

我这里下载的MySQL 8

wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.20-el7-x86_64.tar.gz

解压缩

tar -xvf mysql-8.0.20-el7-x86_64.tar.gz 

libaio 如果系统上尚不存在 该库,则可能需要安装该库

wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm

添加用户组

groupadd mysql
useradd -g mysql mysql

解压后记得改文件名字,要不然源文件太长, 创建mysql 文件,并赋权

cd mysql8
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files

查看一下文件的权限,使用命令 ll

drwxr-x---.  2 mysql mysql     25 Jul 16 13:56 mysql-files

drwxr-x---. 一共10个字符,下面讲解下:

  • d 表示目录,如果是 - 表示是一个普通文件。剩余的9个字符,分成3组,每组3个字符,分别表示owner/group/others的rwx权限;
  • owner 表示拥有者,可以看到拥有者是 mysql 用户
  • group 表示组,除了mysql这个人的 同一个MySQL组拥有的权力
  • others 就是其他人了,啥权限也没有。

初始化

[root@localhost mysql8]# cd bin/
[root@localhost bin]# ./mysqld --initialize --user=mysql
2020-07-16T05:41:18.862448Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2020-07-16T05:41:18.862588Z 0 [System] [MY-013169] [Server] /home/mysql8/bin/mysqld (mysqld 8.0.20) initializing of server in progress as process 86322
2020-07-16T05:41:18.887563Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-07-16T05:41:19.361487Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-07-16T05:41:20.490244Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: kI1F6zc4_oiG
[root@localhost bin]# 
[root@localhost bin]# ./mysql_ssl_rsa_setup
[root@localhost bin]# 
[root@localhost bin]# ./mysqld_safe --user=mysql &
[1] 86562
[root@localhost bin]# 2020-07-16T05:43:14.495984Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

[1]+  Exit 1                  ./mysqld_safe --user=mysql
[root@localhost bin]# 

报错,log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'. log-error 日志文件不存在,为用户mysql创建一个可操作的(可写的)。这句话意思不止是文件不存在,这个文件的权限还必须是 mysql 可操作才行。
我们可以找一下,哪里设置了这个日志的路径。

[root@localhost mysql8]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

[root@localhost mysql8]# 

之前我们创建了一个 mysql-files 文件,我们把 my.cnf 的日志路径放到这里面,修改 my.cnf ,并在 mysql-files 下手动创建一个 mariadb.log。

[mysqld_safe]
log-error=/home/mysql8/mysql-files/mariadb.log
pid-file=/home/mysql8/mysql-files/mariadb.pid

重试

[root@localhost bin]# ./mysqld_safe --user=mysql &
[1] 88142
[root@localhost bin]# 2020-07-16T05:56:52.917143Z mysqld_safe Logging to '/home/mysql8/mysql-files/mariadb.log'.
2020-07-16T05:56:52.949548Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2020-07-16T05:56:53.495893Z mysqld_safe mysqld from pid file /home/mysql8/mysql-files/mariadb.pid ended

[1]+  Done                    ./mysqld_safe --user=mysql
[root@localhost bin]# 

好,目前没看到报错信息。那我们去启动一下,mysql文件里有个support-files 文件,我们进这里面

[root@localhost support-files]# pwd
/home/mysql8/support-files
[root@localhost support-files]# ./mysql.server start
./mysql.server: line 239: my_print_defaults: command not found
./mysql.server: line 259: cd: /usr/local/mysql: No such file or directory
Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)

emmm..又报错了。为什么去这里找文件,哎。看到官方命令默认就是在 /usr/local 下进行的操作,那应该是有命令在初始化的时候可以指定才对,再找找。百度一番,两种形式:

  • 在 初始化的时候填写 basedir
bin/mysqld --user=mysql --basedir=/usr/local/mysql-5.7.12 --datadir=/usr/local/mysql-5.7.12/data/  --initialize
  • 在 my.cnf 配置 basedir

我将用第二种方式,为了防止在报错我还添加了 datadir,用于指定数据文件的地址。也可以是以上两种方式指定路径。
先创建 数据文件夹 用来存放数据的,记得给mysql权限

[root@localhost mysql8]# mkdir data
[root@localhost mysql8]# chown mysql:mysql data
drwxr-xr-x.  2 mysql mysql      6 Jul 16 14:12 data

data文件已经属于 mysql 组了,并且也是mysql 这个人创建的。ok 接下来修改 my.cnf 。

[mysqld]
basedir=/home/mysql8
datadir=/home/mysql8/data

尝试第二次启动

[root@localhost support-files]# ./mysql.server start
Starting MySQL. ERROR! The server quit without updating PID file (/home/mysql8/data/localhost.localdomain.pid).

哎....,查找了半天,问题终于解决了,是因为我给了 mysql-files 权限,但是咱们手动创建的 .log 文件没有mysql操作权限。

[root@localhost support-files]# ./mysql.server start
Starting MySQL.. SUCCESS! 

进入mysql走一波

[root@localhost bin]# ./mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

我qnmlgb...,不能连接本地mysql服务,查看日志走。

2020-07-16T07:20:58.742741Z 310 [Warning] [MY-013360] [Server] Plugin sha256_password reported: ''sha256_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'

翻译最后一句就知道 请选择 caching_sha2_password 代替,mysql8的身份验证插件改了。
官方文档有写:



好吧修改一下:

[mysqld]
default_authentication_plugin=caching_sha2_password
basedir=/home/mysql8
datadir=/home/mysql8/data

经过重新初始化后...启动是成功了,日志也不报错了,但是..连接的时候

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

这个问题也需要改配置文件 my.cnf,但不需要重新初始化,如下:加一个[clinet] ,socket 的指向要和 [mysqld] 里的 socket 指向一致。

[client]
socket=/var/lib/mysql/mysql.sock

重新启动,然后连接数据库。

[root@localhost bin]# ./mysql -uroot -prK>g5XeUN(Bx
-bash: syntax error near unexpected token `('

你哭的心都有了是不是...,修改my.cnf

[mysqld]
skip-grant-tables

在重启,终于成功了。

三、远程连接

接下来就是添加一个用户,然后该用户可以远程访问mysql。以下的所有报错我就不在说了,只告诉正确的操作,执行问之后大家就可以连接了。

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> create user 'dev'@'%' identified by 'mysql@dev.2020';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to 'dev'@'%';
Query OK, 0 rows affected (0.00 sec)

修改密码规则,要不然我们的工具是连接不上的。

mysql> ALTER USER 'dev'@'%' IDENTIFIED BY 'mysql@dev.2020' PASSWORD expire never; 
Query OK, 0 rows affected (0.01 sec)

修改密码

mysql> ALTER USER 'dev'@'%' IDENTIFIED WITH mysql_native_password BY 'mysql@dev.2020';
Query OK, 0 rows affected (0.00 sec)

修改 root 密码,不要忘记

alter user 'root'@'localhost' identified by 'Root@123456';

刷新

mysql> flush privileges;
Query OK, 0 rows affected (0.05 sec)

总结

装 mysql 一定要有耐心,建议看完以后再去安装。

相关文章

网友评论

      本文标题:linux 安装 mysql8.

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