Hello,好记性不如烂笔头~ 虽说不会经常部署 MySQL ( OS:当然了,这服务不是公司部署好等着用就好了吗~?)
但!作为程序员、能够随手、无卡顿的部署并使用一个新的数据库 / 数据库集群也算是基操了~ 好记性不如烂笔头,顺手记录了一下较新版本 v8.4.x MySQL 的部署过程。
准备:
- 物理机 1 台,我的操作系统是 CentOS 7;
- 本机,能够联通互联网,能够连通物理机。
1. 下载、安装
MySQL 官方 yum 源地址罗列在分发页:https://dev.mysql.com/downloads/ ,
如果是 ubuntu,选择 MySQL APT Repository,如果是 OPENSUSE,选择 MySQL SUSE Repository。我的服务器是 CentOS 系统,选择 MySQL Yum Repository 就好了。
1.1 获取 rpm 下载地址
选择 你的操作系统版本。
1.2 安装
如果服务器可以直连互联网,直接 wget 就可以:
cd ~ # 下载到用户目录
wget https://dev.mysql.com/get/mysql84-community-release-el7-1.noarch.rpm
如果服务器不能直接访问互联网,先下载到本地,然后 scp 拷贝过去:
scp ~/Downloads/mysql84-community-release-el7-1.noarch.rpm root@ 你的服务器 IP 地址:/root/
其次,使用 mysql yum 源安装:
cd ~ # 假定刚才的文件下载到你的用户目录
rpm -ivh mysql84-community-release-el7-1.noarch.rpm
yum update
yum install mysql-server
1.3 初始化、启动、验证安装
首先是修改权限:
chown -R mysql:mysql /var/lib/mysql/
然后是初始化 MySQL
mysqld --initialize
并启动 MySQL
systemctl start mysqld
一般情况下,systemctl start mysqld
是没有回显的:
如果遇到这个问题:
则需要检查权限修改是否成功,命令是 groups mysql
,如果存在下述回显则无恙,
否则,需要酌情执行以下命令:
# 将 mysql 用户加入 mysql 用户组
usermod -a -G mysql mysql
# 修改 /var/lib/mysql/ 的归属权限
chown -R mysql:mysql /var/lib/mysql/
ls -alhs /var/lib/mysql/ # 检查权限归属
验证安装
systemctl status mysqld
mysqladmin --version
2. 修改 root 用户密码
首先邀请你手欠一下,输入 mysql
命令:
是的,MySQL 安装后会自动生成一个初始临时密码(实际上我们之前 “initialized” 过了)。但这个临时密码不会是我们日常使用的密码,一般需要修改成更高复杂度或更易记的密码。
2.1 找到密码
密码会出现在 error.log 文件中。首先查看 my.cnf 文件中日志路径:
cat /etc/my.cnf
路径是 /var/log/mysqld.log
。
使用 grep -i password /var/log/mysqld.log
命令,查看临时密码:
grep -i password /var/log/mysqld.log
2.2 修改密码
MySQL 8 修改密码方式和 5.x 版本的修改方式差挺多,首先是在服务器登录 mysql
mysql -u root -p
密码,使用刚才得到的临时密码。我的密码是 xKt2o#Dq***
这个。
然后修改 root
密码。这里假定修改后的密码是 123456abc,那么命令就是:
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456abc';
FLUSH PRIVILEGES;
然后
exit
重新登陆,验证:
3. 外部访问
刚安装完的 MySQL,只能从服务器本机访问、无法从当前 ssh 过去的本机以 mysql 命令直接连接。这肯定很不方便使用嘛~ 这样调整:
3.1 修改数据库权限限制
首先是在服务器登录 mysql
mysql -u root -p
因为是刚安装完成,所以直接创建这个记录:
CREATE USER 'root'@'%' IDENTIFIED BY '123456abc';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
如果 CREATE USER 'root'@'%' IDENTIFIED BY '123456abc';
提示异常,这条则替换成 ALTER USER 'root'@'%' IDENTIFIED BY '123456abc';
,后面的命令不变。
其中,% 代表 任意 IP。保存后无需重启 mysqld 服务即生效(如果你非常想,就systemctl restart mysqld && system status mysqld
)。
3.2 调整防火墙策略
如使用了 iptables, 则添加以下允许 3306 端口 TCP 链接规则:
# root 用户
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables-save
对于 ufw 防火墙:
ufw allow 3306/tcp
3.3 验证
在本机,连接服务器 mysql:
mysql -h 服务器IP -u root -p
成功如图:
应该不会失败 =v=,失败或遇到任何问题请留言;看到了就会回。