最近在做后端开发过程中,经常需要访问数据库,之前都在在windows环境下大家mysql环境,相对容易一些,linux环境下的mysql数据库配置有些复杂,我参考了一大堆资料,有些细致,有些略,为了后续自己在其他新服务器下的快速配置,也为给大家一个完整的配置过程,特意编写了如何在Redhat Linux7.9环境下安装配置Mysql,包括如何下载,建立用户,设置权限,初始化,配置,服务注册启动和远程用户访问权限设置等等。具体记录如下。
一.下载mysql安装包
本次主要下载Linux Generic glibc2.12 x86,64bit安装包,大家可以根据自己的操作系统情况下载相应的版本,目前看该配置方法对应mysql8系列应该都支持。具体如下。
官网 https://downloads.mysql.com/archives/community/
下载 mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
解压:tar xvJf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
目录改名(解决路径名太长问题):mv mysql-8.0.26-linux-glibc2.12-x86_64 mysql8
移动文件夹:mv mysql8 /usr/local/
进入mysql8目录,新增目录:mkdir data
二.创建mysql组和用户
groupadd mysql #增加用户组
useradd -r -g mysql mysql #增加用户
passwd mysql #修改mysql用户密码,密码修改为mysql123456,后续可以用该用户登录OS
三.配置目录权限
#先移动到当前目录下,一定要做,否则后面第四步mysql的启动会出错,没有文件写权限。
chown -R mysql.mysql /usr/local/mysql8/
或者
chown -R mysql:mysql ./
或者
chmod -R 755 /usr/local/mysql8/data
四.Mysql初始化,注意是否存在相关的目录,如果不存在,要先新建data目录
./bin/mysqld --user=mysql --basedir=/usr/local/mysql8/ --datadir=/usr/local/mysql8/data/ --lower-case-table-names=1 --initialize
说明:–lower-case-table-names=1 即设置不区分表明大小写
输出默认的临时密码:
S_K<Ee<gfdkgNf #系统默认给的密码,后面修改为root1980099
五.Mysql配置
按照自己的文件路径配置,主要是mysqld的配置,关于其他配置,可自行搜索,若有【mysql-safe】的配置,可以先注释掉。
vi /etc/my.cnf
初始内容如下
样例:
[mysqld]
basedir = /usr/local/mysql8
datadir=/usr/local/mysql8/data
# socket=/var/lib/mysql/mysql.sock
socket = /tmp/mysql.sock
log-error = /usr/local/mysql8/data/error.log
pid-file = /usr/local/mysql8/data/mysql.pid
tmpdir = /tmp
port = 3306
character-set-server=UTF8MB4
# 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
# 解决“java.sql.SQLException: Expression #1 of ORDER BY clause is not in SELECT list,references column”
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
lower_case_table_names=1
六.建立MySQL服务(注意当前路径应该在mysql8,即support-files的根目录)
1.添加Mysql到系统服务
cp -a ./support-files/mysql.server /etc/init.d/mysql # 若mysqld,以下mysql相应的修改mysqld,如下所示
chmod +x /etc/init.d/mysql #授权服务
chkconfig --add mysql #添加服务
2.检查服务是否生效
chkconfig --list mysql
3.启动Mysql服务
service mysql start
service mysql status
停止:service mysql stop
重启:service mysql restart
4.登陆Mysql
注意:登录后记得先修改密码,默认密码是前面第四步生成的临时密码。
mysql -uroot -p
修改密码,命令如下
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root1980099';
用新密码重新登陆:mysql -uroot -p
show databases;
七.创建远程用户,可以不是root,比如test用户,用test替换下面的root
查看mysql用户
select host, user, authentication_string, plugin from user;
创建远程用户:
CREATE USER 'root'@'%' IDENTIFIED BY 'root20250011';
修改加密规则并更新密码:
# 修改加密规则并更新密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root20250011';
#GRANT ALL ON 表示所有权限,% 表示通配所有 host,可以访问远程。为上面创建的远程root用户设置权限。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
刷新权限:
flush privileges;
重新启动mysql,详见第六步的服务重启命令。
八、本地和远程连接测试
经过前面七步的设置,完成了本地root用户和远程root用户的设置,具体用户信息如下。
远程用户:远程连接正常,用户为root,密码为root20250011,因为远程连接的是%或者指定ip
本地用户:本地连接正常,用户为root,密码为root1980099,因为本地连接是%localhost
连接测试情况如下图。
1.本地连接-mysql命令行工具
2.远程连接-dbeaver工具