我看到网上很多都写的乱七八糟, 我自己总结了一个
首先, 去Mysql官网上下载一个mysql-8.0.39二进制版本的安装包
这个你自己去下载我这里就写一个安装过程和遇到的坑
第一步 解压mysql压缩包和创建my.cnf文件
说明:
- 二进制安装指定版本MySQL的时候,需要手动写配置文件到/etc目录下。
- 至于为什么要写在etc文件夹底下,你可以看一下这个文章https://blog.csdn.net/DataIntel_XiAn/article/details/96473095
解压命令和建立my.cnf文件
tar xvJf xxxx
touch /etc/my.cnf
my.cnf配置文件
[mysql]
default-character-set=utf8mb4
[client]
#port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
bind-address=0.0.0.0
port=3306
server-id=3306
user=mysql
general_log = 1
general_log_file=/var/log/mysql/mysql.log
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql/mysql-8.0.39
datadir=/usr/local/mysql/mysql-8.0.39/data
log-bin=/usr/local/mysql/mysql-8.0.39/data/mysql-bin
innodb_data_home_dir=/usr/local/mysql/mysql-8.0.39/data
innodb_log_group_home_dir=/usr/local/mysql/mysql-8.0.39/data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
symbolic-links=0
default-authentication-plugin=mysql_native_password
# Disabling symbolic-links is recommended to prevent assorted security risks
# 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=/usr/local/mysql/mysql-8.0.39/data/mysql.log
pid-file=/usr/local/mysql/mysql-8.0.39/data/mysql.pid
#
# include all files from the config directory
第二步 安装必要插件 建立必要文件夹和赋予权限
安装libaio1这个插件, 我在做数据库初始化的时候报错没有这个插件, 如果你们有这个插件或者做数据库初始化的时候没有报错 那就不用安装
sudo apt-get update
sudo apt-get install libaio1
这里建立的文件夹都是写在my.cnf中的路径配置,如果你们觉得这个路径不好,可以改但是记得同步修改上面my.cnf中的路径
建立必要文件夹和赋予权限(这里包含了必要的data文件夹)
mkdir /usr/local/mysql/mysql-8.0.39/data
chmod 777 /usr/local/mysql/mysql-8.0.39/data
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
mkdir /var/log/mysql
chmod 777 /var/log/mysql/
第三步:创建mysql用户组
groupadd mysql
useradd -g mysql mysql
第四步: 配置环境变量
我这里的路径是/usr/local/mysql/mysql-8.0.39/ 这里记得改成你们自己的
vim /etc/profile
export PATH=$PATH:/usr/local/mysql/mysql-8.0.39/bin:/usr/local/mysql/mysql-8.0.39/lib
source /etc/profile
第五步: 初始化数据库
进入到mysql中的bin目录下,执行这个命令 这里路径也要注意修改成你们自己的
./mysqld --user=mysql --basedir=/usr/local/mysql/mysql-8.0.39 --datadir=/usr/local/mysql/mysql-8.0.39/data/ --initialize
这里要记得复制一下,初始密码,待会修改密码的时候要用
第六步: 初始化socket
如果你发现的socket=/var/lib/mysql/mysql.sock 这个目录中存在mysql.sock这个文件, 你可以跳过这一步
还是进入到mysql的bin目录中
执行mysqld
./mysqld
这里如果你们卡住了, 可以重新连接一下服务器终端就好了
第七步: 连接数据库更改密码赋予root用户远程连接权限
abc12345这个是我修改的密码
mysql -uroot -p'xxxx'
alter user 'root'@'localhost' identified by 'abc12345';
CREATE USER 'root'@'%' IDENTIFIED BY 'abc12345';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
我遇到的问题
- 一开始不存在my.cnf没经验,不知道要自己添加,所以有了创建my.cnf文件的步骤
- 一开始不了解数据库这个配置文件, my.cnf上的配置文件都是在其他博主哪里复制过来了,然后运行都有问题, 网上也是乱七八糟的。我遇到的问题是没有监听端口和ip 原因是my.cnf中没有bind-address=0.0.0.0
- 这个卡了我很久在做数据库初始化的时候没有生成socket,报错:“ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)”,所以就导致我执行连接数据库命令的时候报错,之后我偶然发现执行bin目录下的mysqld文件可以成功生成socket文件
为什么会导致mysql.sock没有这个文件, 我到现在还没找到原因,有知道的可以在评论区说一下