一. 下载文件

这个是编译好的​​MySQL​​文件,我们只需要简单配置就可以!

MySQL系列之数据库安装_自定义配置

这里通过wget下载:

wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.26-el7-x86_64.tar.gz

# 解压后重命名
mv mysql-8.0.26-el7-x86_64 mysql

二. 解压和依赖安装

先安装一些必要的依赖:

sudo apt-get install libncurses5  # 客户端需要

解压后就和我们自己编译的一样了:

MySQL系列之数据库安装_远程连接_02

三. 配置初始化

我们这里就使用当前用户安装就可以,不用麻烦在创建用户了!

在mysql解压后的文件夹下,先执行初始化:

./bin/mysqld --initialize --user=kirin --basedir=/home/kirin/install_home/mysql --datadir=/home/kirin/install_home/mysql/data

初始化之后生成一个默认的账号:root和随机密码,记一下后面需要:

MySQL系列之数据库安装_自定义配置_03

增加配置文件:​​my.cnf​​​,这里需要注意一下,服务端(​​mysqld​​​)和客户端(​​client​​​)下面配置的​​socket​​需要一致

[mysqld]
user=kirin
port=3366
basedir=/home/kirin/install_home/mysql
datadir=/home/kirin/install_home/mysql/data
pid-file=/home/kirin/install_home/mysql/data/mysqld.pid
socket=/home/kirin/install_home/mysql/mysqld.sock
log-error=/home/kirin/install_home/mysql/mysqld.log
character-set-server=utf8mb4
bind-address=0.0.0.0
[mysql]
default-character-set=utf8mb4
[client]
socket=/home/kirin/install_home/mysql/mysqld.sock

四. 服务端启动

这里我们需要先修改一个启动脚本:​​support-files/mysql.server​

# If you change base dir, you must also change datadir. These may get
# overwritten by settings in the MySQL configuration files.

basedir=/home/kirin/install_home/mysql
datadir=/home/kirin/install_home/mysql/data

# Default value, in seconds, afterwhich the script should timeout waiting

启动服务:​​mysql.server start​

MySQL系列之数据库安装_自定义配置_04

查看mysql启动状态:

ps -ef | grep mysqld

./mysql.server status

五. 客户端连接

在​​bin​​​目录下的​​mysql​​文件就是客户端

MySQL系列之数据库安装_linux_05

连接mysql服务器:​​./mysql -u root -p e(epKu1t#jUa​​,但是会报错!

MySQL系列之数据库安装_linux_06

这个问题很好解决,连接的时候指定socket的路径就可以了:

MySQL系列之数据库安装_修改密码_07

六. 修改密码

我们第一次进入之后需要先修改密码:

MySQL系列之数据库安装_修改密码_08

设置密码:

mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.02 sec)

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

退出重新登陆(测试一下)

七. 设置远程连接

mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0

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