一、整体思路
主要内容:使用dnf 在线安装
- 删除已有的mysql
- 使用dnf在线安装
- 确认本地是否有mysql的rpm包以及对应的版本信息
- 使用dnf命令安装
- 配置数据库参数
- 查找mysql的配置文件
- 修改my.cnf
- 启动数据库服务
- 初始化数据库
- 配置数据库的连接信息
- 创建用户
- 配置用户的权限
- 配置navicat客户端的远程连接
特别注意:
- 在启动数据库服务之前,一定要先配置my.cnf。有些参数配置,一旦第一次启动服务后,就无法再次配置了。比如 大小写敏感参数(lower_case_table_names)!!!
二、系统环境
# 查看系统版本
cat /etc/redhat-realse
三、具体操作
1、检查并清除以前的mysql相关文件
提醒:这是很重要的工作,一定要不能略过。
- 查看并卸载mysql的安装包。
- 执行命令:dnf list installed | grep mysql 。或者使用对应的rpm命令。 如果有内容,则使用 dnf remove 包名 卸载。
- 执行命令:find / -name mysql 。如果有内容,则使用 rm -rf 文件路径 删除文件。
拓展:
1. dnf list installed 表示查询所有安装过的rpm包
2. grep mysql 表示使用正则表达式查询包含关键字mysql的内容
3. 分别开repository 和 package的关系。 rpm包包含在repository中,这也是 dnf repolist 和 dnf list 的区别
4. whereis、which、find、location的区别和用法 https://www.cnblogs.com/kex1n/p/5233821.html
5. rpm ,yum ,dnf 之间的区别和关系 https://www.ywnz.com/linux/6252.html
2、使用dnf安装
查找系统是否包含mysql的rpm包。
- 查找系统是否包含mysql的rpm包。http://ipcmen.com/dnf
- 如果没有mysql-server的rpm包,也可以去官网查找对应的rpm地址,然后安装。
dnf search mysql //查询包含mysql关键字的rpm
- 查看具体的mysql server的版本信息
dnf info mysql-server
- 安装
dnf install -y mysql-server
拓展:
在系统的rpm包中,一定要区分 mysql 和 mysql-server
Linux系统-RPM包详解 https://www.cnblogs.com/luodenglin/p/11888751.html
3、配置数据库参数
- 查找数据库的默认配置文件的读取位置
mysql --help | grep my.cnf
#说明,按优先级加载my.cnf
- 修改my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
[mysqld]
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
#最大连接数
max_connections = 400
#最大错误连接数
max_connect_errors = 1000
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
拓展:
mysql配置文件的读取:
1. 启动服务时,使用指定的配置文件
a. 启动命令 mysqld --defaults-file=/etc/my.cnf --user=root
b. 查看是否指定文件命令 ps aux|grep mysql|grep 'my.cnf'
2. 默认读取默认的my.cnf配置文件
a. 查询对应的默认文件夹 mysql --help|grep 'my.cnf'
b. 在my.cnf中,还可以通过包含其他配置文件的路径的方式,调用另外的配置
4、启动数据库服务同时设置开机自启动
systemctl enable --now mysqld
拓展:
systemctl 相关:
- Systemctl能够管理的单元包括:服务(.service),挂载点(.mount),套接口(.socket)和设备(.device)作为单元。
- 单位的目录:/usr/lib/systemd/system(Centos)或/etc/systemd/system(Ubuntu)
- systemctl命令兼容了service,即systemctl也会去/etc/init.d目录下,查看,执行相关程序。
- Linux 服务管理有两种方式 service和systemctl
systemctl 命令完全指南
linux中systemctl详细理解及常用命令
5、初始化数据库
mysql_secure_installation
依次需要判断的内容:
配置验证密码组件,输入 y
配置密码验证等级,可以输入 0 、1 、2 ,分别对应三个等级。
输入密码,需要输入两次,页面上不会显示出你输入的密码,输入完之后按回车即可
确认使用该密码,输入 y
是否移除匿名用户,输入 y
是否禁止root用户远程登录 如果需要远程登录,请输入 n
是否移除测试数据库,输入 y
是否重载权限表,输入 y
6、配置数据库的连接信息
mysql -uroot -p 通过新密码再次登陆
create user 'root'@'%' identified by '新密码'; 授予远程访问权限
grant all privileges on *.* to 'root'@'%'; 授予远程访问权限
flush privileges; 授予远程访问权限
alter user 'root' @'%' identified with mysql_native_password by '新密码'; 授权mysql_native客户端工具
说明
#指定某个用户关于具体表的权限
grant all privileges on 数据库名.* to '用户名'@'%';
特别注意:
_ 如果还是无法通过客户端远程连接到数据库,可以检查一下防火墙是否禁用3306端口。另外,新买的阿里云服务器,要主要是否配置对应的安全组策略。_