【Linux】MySQL安装配置

0 阅读4分钟

【Linux】MySQL安装配置

检查是否已安装 rpm -qa|grep -i mysql

若安装了,需要卸载

rpm -e mysql-libs-5.1.61-4.el6.x86_64 --nodeps

  1. 官网下载 MySQL 包

首先,查看服务器glibc版本,来选择 MySQL 的安装版本 rpm -qa|grep glibc 官方下载地址:

downloads.mysql.com/archives/co…

  1. 上传解压至home目录

tar -xJvf mysql-8.4.2-linux-glibc2.17-x86_64.tar.xz

  1. 移动文件

将压缩包移动到usr/local目录下,并重命名为mysql8.4.2

mv /home/mysql-8.4.2-linux-glibc2.17-x86_64 /usr/local/mysql8.4.2

  1. 创建用户组 groupadd mysql #创建用户组

-r 参数表示 mysql 用户是系统用户,不可用于登录系统,创建用户 mysql 并将其添加到用户组 mysql 中

useradd -r -g mysql mysql

chown -R mysql /usr/local/mysql8.4.2/ # 将文件的所有属性改为 mysql 用户 chgrp -R mysql /usr/local/mysql8.4.2/ # 将组属性改为 mysql 组

注:为什么要创建用户?

MySQL 开在 root 上意味着它可以在系统的任何位置写任何文件,MySQL 开在 mysql 用户上,保证它对系统大部分位置不可写,从而 MySQL 即使被攻击,也可以限制它对整个系统的影响。

当让MySQL运行的时候使用一个独立的账号和用户组时,该用户和用户组权限是可以控制的。当系统中文件的权限未设定给Mysql用户以及用户组时,Mysql用户无法进行读写执行操作。而如果MySQL被黑了,可以通那么开始拿到的权限就是那个创建的账号而不是默认的root,我们在编译安装的时候创建一个mysql组和一个mysql用户,并把datadir和安装目录属主改为mysql。 在MySQL启动的时候,单进程mysqld,该进程的属主就是mysql,这样就保证了mysql服务的独立性,即使mysql服务被黑掉,得到了mysql用户权限,也不会影响整个系统的安全。

  1. 创建数据目录并赋予权限

mkdir -p /data/mysql #数据目录

给data文件夹增加权限

chown -R mysql:mysql /data/mysql chmod -R 755 /data/mysql

  1. 修改配置文件 vim /etc/my.cnf

[mysqld] bind-address=0.0.0.0 port=3306 user=mysql basedir=/usr/local/mysql8.4.2 datadir=/data/mysql socket=/tmp/mysql.sock log-error=/data/mysql/mysql.err pid-file=/data/mysql/mysql.pid #character config character_set_server=utf8mb4 symbolic-links=0 explicit_defaults_for_timestamp=true lower_case_table_names=1

[client] default-character-set=utf8mb4 socket=/tmp/mysql.sock

[mysql] default-character-set=utf8mb4 socket=/tmp/mysql.sock

  1. 初始化数据库

参数: --basedir 为mysql解压目录,–datadir 为mysql数据存放目录。(注意安装路径是否一致)

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql8.4.2/ --datadir=/data/mysql --user=mysql --initialize

查看初始密码

cat /data/mysql/mysql.err

  1. 创建MySQL服务

首先需要将scripts/mysql.server服务脚本复制到/etc/init.d/,并重命名为mysqld。

cp /usr/local/mysql8.4.2/support-files/mysql.server /etc/init.d/mysqld

通过chkconfig命令将mysqld服务加入到自启动服务项中。

chkconfig --add mysqld

注意服务名称mysqld就是我们将mysql.server复制到/etc/init.d/时重命名的名称。

查看是否添加成功

chkconfig --list mysqld

启动服务

service mysql start

查看启动状态

service mysql status

  1. 配置全局环境变量

编辑/etc/profile文件,使用vim /etc/profile命令,在profile文件中添加如下两行配置,使用:wq命令保存后退出

export PATH=$PATH:/usr/local/mysql8.4.2/bin:/usr/local/mysql8.4.2/lib

设置环境变量立即生效使用source /etc/profile命令。 source /etc/profile

  1. 登录MySQL修改密码

使用默认密码登录

mysql -uroot -p

修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxx';

授权远程用户连接

改表法

选择数据库

use mysql;

最后授权 MySQL,允许远程用户登录访问 MySQL

update user set host = '%' where user = 'root';

刷新权限

flush privileges;

若防火墙打开,需要开放该端口

查看防火墙状态

systemctl status firewalld

永久开放端口

firewall-cmd --list-ports --permanent

开放指定端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

重载防火墙

firewall-cmd --reload

命令含义: --zone #作用域 --add-port=3306/tcp #添加端口,格式为:端口/通讯协议 --permanent #永久生效,没有此参数重启后失效

或者 -> 允许 MySQL 端口的流量

sudo ufw allow 3306

查看防火墙状态

systemctl status firewalld

永久开放端口

firewall-cmd --list-ports --permanent

开放指定端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

重载防火墙

firewall-cmd --reload

命令含义:

--zone #作用域

--add-port=3306/tcp #添加端口,格式为:端口/通讯协议

--permanent #永久生效,没有此参数重启后失效

或者 -> 允许 MySQL 端口的流量

sudo ufw allow 3306

新建用户 CREATE USER 'test_user'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON . TO 'test_user'@'%'; FLUSH PRIVILEGES;

创建只读用户

CREATE USER 'readonly'@'%' IDENTIFIED BY '123456'; GRANT SELECT ON . TO 'readonly'@'%'; FLUSH PRIVILEGES;

-- 仅授权部分数据库 GRANT SELECT, SHOW VIEW ON your_database.* TO 'tys_user'@'%'; GRANT ALL PRIVILEGES ON data_gateway.* TO 'tys_user'@'%'; FLUSH PRIVILEGES;

-- 取消授权 REVOKE ALL PRIVILEGES ON . FROM 'tys_user'@'%';