下载 mysql 5.7.42
开始安装
将下载的安装包上传到服务器根目录
ls /
# mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz bin boot dev etc home lib lib64 media mnt ...
将安装包移动到 /usr/local 目录下
mv /mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz /usr/local
将安装包解压
# 进入 /usr/local
cd /usr/local
# 开始解压
tar -zxvf mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz
# 将解压出来的文件重名为 mysql
mv mysql-5.7.42-linux-glibc2.12-x86_64 mysql
创建数据存储文件
mkdir /usr/local/mysql/data
创建 mysql 用户和用户组(初始化数据库时用)
groupadd mysql
useradd -g mysql mysql
将存储文件(/usr/local/mysql/data)的用户和用户组设置为新建的 mysql
chown -R mysql:mysql /usr/local/mysql
创建配置文件 /etc/my.cnf
vim /etc/my.cnf
然后将如下内容复制到配置文件 /etc/my.cnf 进行保存
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/data/mysql.err
pid-file=/usr/local/mysql/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
初始化 mysql
# 进入 mysql 的二进制文件目录
cd /usr/local/mysql/bin/
# 使用 mysqld 初始化
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql --initialize
将 mysql 添加为系统服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
cp /usr/local/mysql/bin/mysql /bin/mysql
启动 mysql 服务
systemctl start mysql
查看服务状态
systemctl status mysql
# mysql.service - LSB: start and stop MySQL
# Loaded: loaded (/etc/rc.d/init.d/mysql; bad; vendor preset: disabled)
# Active: active (running) since 六 2024-09-28 17:17:36 CST; 4min 32s ago
# Docs: man:systemd-sysv-generator(8)
# Process: 4796 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=0/SUCCESS)
设置密码
启动 mysql 服务之后,少不了需要登录或远程连接据库,这都是需要登录密码的,所以我们得弄到这个密码。首先 mysql 在 /usr/local/mysql/data/mysql.err 文件中提供了 root 用户的初始密码,我们可以先通过这个初始密码登录数据库,然后将通过 sql 将密码修改为自己需要的,这样就搞定了
首先查看 mysql 初始密码
# 使用 cat 命令查看
cat /usr/local/mysql/data/mysql.err
通过初始密码进行登录,登录之后修改密码为 root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;
设置完成后通过新设置的密码进行登录
问题汇总
无法远程登录
如果使用 Navicat、SQLyog 无法连接数据库,可尝试以下方式解决:
- 开放防火墙3306端口
# 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload
- 修改 root 用户的 host 属性
USE mysql;
UPDATE user set host = '%' where user = 'root';
FLUSH PRIVILEGES;
设置完成后重新连接