Linux 下 MySQL8.0 安装踩坑以及配置文件、修改初始密码

最近装了国产的基于Linux的操作系统 deepin,整体感觉还不错,想详细了解的可以去我的公众号【大学IT圈】了解。

这篇文章来记录我在 Linux 上安装 MySQL8 的过程。

首先下载安装包
官网地址:https://dev.mysql.com/downloads/mysql/
下载地址(64位):https://dev.mysql.com/downloads/file/?id=480751
需要 32 位的可以去官网地址找。

下载的文件应该是一个 mysql*.tar.xz 格式的压缩包,这里需要先对 .xz 解压

xz -c mysql*.tar.xz

结果是一个 tar 文件,解压即可(在这里 * 号不代表通配符,仅表示省略,使用时换成自己的文件名)

tar -xvf mysql*.tar
mv mysql* /usr/local/mysql

OK,到这里我们就得到 MySQL 的文件夹了,并且将他移动到了 /usr/local 目录下改名为 mysql 。

在这里我们新建一个 mysql 用户组和用户用来运行 mysql,这样可以提高系统的安全行性。

groupadd mysql
useradd -M -g mysql -s /sbin/nologin mysql
passwd mysql

上面的命令新建一个用户组,再新建一个用户并且不可以登录,不创建家目录。第二句命令给 mysql 用户改密码。

我们在根目录下新建一个 data 目录存放 mysql 数据的存放目录。

sudo mkdir -p /data/mysql
sudo chown -R mysql.mysql /data

创建 /data 目录并且将目录属主设置为 mysql.

接下来创建 mysql 的配置文件 /etc/my.cnf

sudo vim /etc/my.cnf

# MySQL 配置文件,
#参考:http://blog.51cto.com/zhangxinqi/2178407  
#     https://www.cnblogs.com/lyq863987322/p/8074749.html

# 数据库目录 /data/mysql
[client]
port=3306
# mysql socket 文件存放地址 
socket=/tmp/mysql.sock
# 默认字符集
default-character-set=utf8

[mysqld]
server-id=1
# 端口
port=3306
# 运行用户
user=mysql
# 最大连接
max_connections=200
socket=/tmp/mysql.sock
# mysql 安装目录(解压后文件的目录)
basedir=/usr/local/mysql
# 数据目录(这里放在我们新建的 /data/mysql 下)
datadir=/data/mysql
pid-file=/data/mysql/mysql.pid
init-connect='SET NAMES utf8'
character-set-server=utf8
# 数据库引擎
default-storage-engine=INNODB
log_error=/data/mysql/mysql-error.log
slow_query_log_file=/data/mysql/mysql-slow.log

# 跳过验证密码
#skip-grant-tables

[mysqldump]
quick
max_allowed_packet=16M
EOF

OK,到这里配置文件就建好了,上面是我自己的配置,在 mysql 启动的时候就会自动读取这个配置文件。
可能会有好几个地方有 mysql 的配置文件,它的读取顺序是这样的

  1. /etc/my.cnf
  2. basedir/my.cnf
  3. datadir/my.cnf
  4. –defaults-extra-file #在读取全局配置文件之后,读取用户配置文件 (~/.my.cnf)之前,读取extra指定的参数文件
  5. ~/.my.cnf

所以我们在 /etc 下的配置文件 my.cnf 是第一个读取的文件,读到这个文件后就不会在读后面路劲中的配置文件。

现在让我们进入解压后的 mysql 目录,进行 mysql 初始化:

bin/mysqld --initialize

安装的结果是这样的:
安装结果
在橘色线框中的部分,是自动生成的 root 密码,待会儿我们要用这个密码进行登录。

在我重装 mysql 的时候,遇到了初始化的时候没有任何输出的问题,也没有找到日志文件,结果不知道初始密码是什么,只能通过跳过登录验证的方式重置密码。

启动 MySQL

sudo ./support-files/mysql.server start

OK,启动成功,接下来登录 MySQL

bin/mysql -u root -p

然后输入刚刚自动生成的 root 密码即可

修改初始密码

整个过程都比较顺利,没想到在这里踩坑了,试了好几个命令都这样的报错

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

最后执行以下三个命令之一成功。
下面三个命令任选其一

alter user 'root'@'localhost' identified by 'new password'; 
ALTER USER USER() IDENTIFIED BY 'new password';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new password';

OK,安装成功


联系我请移步公众号:大学IT圈

你可能感兴趣的:(软件安装)