最近装了国产的基于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 的配置文件,它的读取顺序是这样的
- /etc/my.cnf
- basedir/my.cnf
- datadir/my.cnf
- –defaults-extra-file #在读取全局配置文件之后,读取用户配置文件 (~/.my.cnf)之前,读取extra指定的参数文件
- ~/.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圈