第十七章:第40节Linux(ubuntu)安装mysql8.0.13

更新于:2021-05-14 16:07:29

我们来安装下mysql数据库,目前mysql的最新版本是8.0.13。mysql版本不一样,在安装时部分细节可能是不一样的。下面的安装流程以8.0.13版本为准。


注意:在安装前,不管是在阿里云还是腾讯云买的主机,要确认下主机所属安全组有没有开放mysql访问相关端口【3306】。不然的话,我们无法使用Navicat连接数据库。


MySQL的安装:


①进入官网(www.mysql.com)获取下载地址


1.png



MySQL Community Server 是开源免费的,这也是我们通常用的MySQL的版本。


1.png


选择操作系统,选择Linux通用的。楠神的ubuntu是64位的,所以mysql也选择64位的。



进入下载页面


1.png


获取下载地址:

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz


②下载解压



cd /usr/local/src 
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz


包是用xz方式压缩的,tar解压时需要加J参数

tar -xvJf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz 解压(包比较大,解压需要耐心等待下)
cd mysql-8.0.13-linux-glibc2.12-x86_64 进入目录

1.png


发现没有configure文件,这是因为mysql的文件都是已编译好的,不需要编译了。


把mysql整个目录移动到 /usr/local里

mv mysql-8.0.13-linux-glibc2.12-x86_64 /usr/local/mysql


③添加系统mysql组和mysql用户


groupadd mysql
useradd -r -g mysql mysql


mysql用户组创建好

1.png


mysql用户

1.png


进入安装mysql软件目录

cd /usr/local/mysql

创建目录data,用来存放数据库数据的目录。

mkdir data

处于安全考虑,修改当前目录为root用户(755)

chown -R root:root ./

但是要把data目录设置为mysql用户

chown mysql:mysql -R data

因为后面我们会用mysql用户允许mysql,而data目录是存放mysql表数据的,mysql用户必须拥有写权限


④初始化MySQL


进入mysql的bin目录


./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data


1.png


又报缺少库错误了,安装下:


1.png


初始化成功


1.png

可以看到系统随机给root用户分配了一个密码,如图所示,这个密码要记住,后面会用。


⑤启动mysql


&是后台运行的意思,执行命令

bin/mysqld_safe --user=mysql &

1.png


终端会卡在一个位置,再按一下Enter即可。


使用刚才随机生成的密码,可进入数据库

./mysql -uroot -p


1.png


⑥更改mysql的root用户密码


第一次使用随机登录并不能使用,因此我们需要更改密码,如下

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
flush privileges;

1.png

select user, host, plugin, authentication_string from user;

1.png

看下plugin这一栏的值是“caching_sha2_password”。有个重要的知识点需要知道:


plugin:登录密码加密规则。

MySQL 8默认使用了新的密码加密规则:caching_sha2_password,原先都是mysql_native_password。一些mysql客户端,如Navicat、PHP脚本,它不支持这种加密插件,就会报错,登录不了。怎么解决呢?要么升级客户端支持caching_sha2_password,要么把某一账户的密码加密规则改回mysql_native_password。


修改加密规则的SQL语句:

ALTER USER '用户名'@'地址' IDENTIFIED with mysql_native_password BY '新密码';


当前的root用户只对本机可用,如果从外网访问mysql,需要额外添加一个账户

CREATE USER '对外用户名'@'%' IDENTIFIED BY '新密码'; //创建用户
grant all on *.* to '对外用户名'@'%'; //赋予全部权利
flush privileges;

1.png


为了安全起见,mysql的root用户最好不要对外开放。


⑦mysql的关闭、重启


1.png


在mysql support-files目录中,有个mysql.server文件

./mysql.server stop    关闭mysql
./mysql.server start   开启mysql
./mysql.server restart 重启mysql


⑧mysql添加配置文件


mysql虽然开启了,当用

netstat -ant

会发现我们还没有开放mysql的端口服务,怎么开启呢?需要从配置文件中开启。mysql默认没有配置文件,需要我们创建/etc/my.cnf

1.png


我们都知道mysql的参数有很多,my.cnf中我们暂时先放一些基本的参数。


1.png


[client]
port=3306

[mysql]
default-character-set=utf8

[mysqld_safe]
socket   = /tmp/mysql.sock

[mysqld]

basedir = /usr/local/mysql/

datadir = /usr/local/mysql/data/

user=mysql

bind-address = 0.0.0.0

port = 3306

socket = /tmp/mysql.sock

character-set-server=utf8

max_allowed_packet = 10M

max_connections=512

log_error=/var/log/mysqld.log

wait_timeout = 28800


socket = /tmp/mysql.sock

为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(仅适用于UNIX/Linux系统),指定路径前先看下是否存在,如不存在,使用find命令搜索下具体位置。


配置好配置文件,重启mysql。


备注:/tmp目录会自动清理文件,sock文件建议放到run目录中。

假如在mysql日志文件中出现了类似错误“Could not create unix socket lock file /var/run/mysql/mysql.sock.lock”,这种错误一般都是目录不存在或者权限不足,可使用命令 mkdir -p /var/run/mysql/ 创建该目录,然后设置目录权限 chown -R mysql:mysql /var/run/mysql/ 。

Linux 下 /tmp目录清理规则


⑨使用Navicat登录mysql


1.png

填写好,连接报错了


1.png


原因是Navicat不支持caching_sha2_password,修改下密码加密规则:


1.png


再连接就OK了。


拓展:


PHP是否可以支持caching_sha2_password?


通过phpinfo()函数:


1.png


如果PHP不支持,在MySQL 8中创建(或修改)使用caching_sha2_password插件的账户需要改回mysql_native_password,这样先前版本的PHP就可以连接使用了。