一、MySQL官网下载地址
MySQL :: Download MySQL Community Server
注:博主为个人服务器所以直接体验最新版,如其他小伙伴对版本有要求可切换(Archives)页面寻找自己需要的版本
注:官网下载时注意自己的linux服务器系统
a.系统选择
generice 通用版 也就是CentOS
b.x64和x32(x86)选择
注:这里简单解释一下x64和x32的区别(x86就是x32),大家只需要知道(x64 > x32)即可(更详细的说明相信大家会自行百度的)
x32 能够直接寻址最多4GB的物理内存
x64 可以寻址远超过4GB的物理内存,理论上可以达到18.4百万亿的地址空间。
如果你的设备有足够的内存(4GB以上),用64位系统将会更有优势。而对于老旧的硬件或者不需要额外内存资源的应用场景,则32位系统就够用了
c.文件下载 (直接官网下载就可以很快)
二、安装/配置 mysql
a.文件解压
tar -xJvf mysql-9.0.1-linux-glibc2.28-x86_64.tar.xz
tar -zxvf xxxxxxxxxxxx.tar.gz
注:我此处官网下载的文件后缀为.tar.xz 而不是.tar.gz 两个文件解压的配置不一样
-z:压缩或解压 gzip 格式的文件
-x:提取文件。
-J:使用 xz 压缩算法来解压文件。
-v:显示详细信息。
-f:指定要处理的归档文件名。
b.创建mysql组和mysql用户
注:网上全是复制来复制去,你能在大多数文章见到这一步,如果是自己建着学习或者其他完全可以跳过,正常就算真的真的需要这一步大概率也不会轮到像我这样的小马楼来安装这个环境,但是为了标准你也可以创建上玩玩(以上均为个人理解)
创建用户组 mysql
groupadd mysql
创建用户 mysql 并配置到mysql用户组
useradd -r -g mysql mysql
-r 表示这是一个系统账号,通常用于运行系统服务而不是供普通用户登录。()
-g 参数指定了用户所属的初始组注:(可惜这里不能直接使用 -p 指定 mysql用户的密码)
附带两个查看命令(你能在最后面看到你自己刚添加的数据)
getent group 查看所有用户组
getent passwd 查看所有用户
c.创建mysql存放数据目录
创建目录
mkdir -p /data/mysql
更改目录的所有权
chown mysql:mysql -R /data/mysql
-p 递归创建所有必要的中间目录
-R 递归更改目录及其子目录和文件的所有者
d.初始化并修改配置信息
1.将解压后的mysql目录移动到/usr/local下改并改名为mysql
可以改名也可以不改个人建议改一下
(不然你目录名就会变成这样---mysql-9.0.1-linux-glibc2.28-aarch64)
mv ./mysql-9.0.1-linux-glibc2.28-x86_64 /usr/local/mysql
2.添加mysql配置文件(方便小伙伴们粘贴)
vim /etc/my.cnf
[mysqld]
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# 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
#服务器监听的IP地址。0.0.0.0 表示服务将监听所有网络接口上的连接请求,也就是允许从任意IP地址访问mysql
bind-address=0.0.0.0
#端口号
port=3306
#服务运行时使用的系统用户。这个就是刚建的用户如果没创建就用 root
user=mysql
#安装目录
basedir=/usr/local/mysql
#数据文件位置
datadir=/data/mysql
#使用 Unix 域套接字可以让本地客户端更快捷地与 MySQL 服务器进行通信,可以提高 MySQL 服务的安全性和性能。
socket=/tmp/mysql.sock
#错误日志文件
log-error=/data/mysql/mysql.err
#进程ID记录文件
pid-file=/data/mysql/mysql.pid
#字符集
character_set_server=utf8mb4[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid
#错误日志文件
log-error=/data/mysql/mysql.err
#进程ID记录文件
pid-file=/data/mysql/mysql.pid
最终效果(小伙伴们实际选择的mysql版本不同配置信息有部分差别---注意区分)
3.切换到bin目录下执行初始化命令
切换文件目录(刚刚移动的mysql目录)
cd /usr/local/mysql/bin
初始化命令(此处理应使用mysql用户来进来初始化操作)
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
--defaults-file=/etc/my.cnf
配置文件路径
--basedir=/usr/local/mysql/
安装目录
--datadir=/data/mysql/
数据文件存放的位置
--user=mysql
指定服务运行时使用的系统用户
--initialize
初始化数据目录
4.初始化失败问题记录(已解决)
/lib64/libstdc++.so.6 not found 解决方案
5.查看初始化密码
cat /data/mysql/mysql.err
6.复制脚本文件到系统目录下方便后续设置服务自启等其他配置
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
7.启动服务
service mysql start
9.设置账号主机权限允许其他host访问
注:此操作在安装mysql目录bin目录下
注:在使用use mysql命令时会提示如下信息
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 特在前一步添加了重置密码命令(需按需使用)
登录 MySQL 数据库:
mysql -u root -p
此处会要求输入密码(上步日志文件获取的密码 粘贴或者输入后mysql为了安全是看不到的实际上是输入成功的)
重置密码命令:(此步骤为mysql首次执行命令时会要求重置命令所以有此步骤,密码尽量数字+英文+特殊符号,部分版本会要求密码的安全性)
ALTER USER USER() IDENTIFIED BY 'gjh123456#';
使用 mysql 数据库:
USE mysql;
更新 root 用户的主机权限:(允许任何节点可以访问root账号)
UPDATE user SET host = '%' WHERE user = 'root';
刷新权限缓存:
FLUSH PRIVILEGES;
10.其他
注:在此特别说明一下mysql用户和mysql组的用途
在下图可以看到 在我们的配置文件中设置了mysql安装的路径datadir为/data/mysql路径,并且将整个目录所有权设置为mysql组的mysql用户,我们在用root命令启用mysql服务后,当前服务的实际拥有权就会自动标志为mysql用户,这样这样就保证了mysql服务的独立性,即使mysql服务被黑掉,得到了mysql用户权限,也不会影响整个系统的安全。(mysql有部分命令如:SELECT ... INTO OUTFILE ... 是可以写文件的,这样就可以给服务器写入脚本搞破坏)
纵享丝滑(亲测可用)