一、整体思路
主要内容:使用dnf 在线安装
- 删除已有的mysql
- 使用dnf在线安装
- 确认本地是否有mysql的rpm包以及对应的版本信息
- 使用dnf命令安装
- 配置数据库参数
- 查找mysql的配置文件
- 修改my.cnf
- 启动数据库服务
- 初始化数据库
- 配置数据库的连接信息
- 创建用户
- 配置用户的权限
- 配置navicat客户端的远程连接
特别注意:
- 在启动数据库服务之前,一定要先配置my.cnf。有些参数配置,一旦第一次启动服务后,就无法再次配置了。比如 大小写敏感参数(lower_case_table_names)!!!
二、系统环境
# 查看系统版本
cat /etc/redhat-realse
![1637211341(1).png](https://www.icode9.com/i/ll/?i=img_convert/654d16c45d33b9aec636df6e37006d9f.png#clientId=u2c7b2728-c12a-4&from=paste&height=58&id=u1337f059&margin=[object Object]&name=1637211341(1).png&originHeight=51&originWidth=628&originalType=binary&ratio=1&size=4657&status=done&style=none&taskId=u6e5d2463-d540-402a-8940-99a38cf121b&width=709)
三、具体操作
1、检查并清除以前的mysql相关文件
提醒:这是很重要的工作,一定要不能略过。
- 查看并卸载mysql的安装包。
- 执行命令:dnf list installed | grep mysql 。或者使用对应的rpm命令。 如果有内容,则使用 dnf remove 包名 卸载。
- 执行命令:find / -name mysql 。如果有内容,则使用 rm -rf 文件路径 删除文件。
![1637216748(1).jpg](https://www.icode9.com/i/ll/?i=img_convert/856c1c81b23369aa44acaf90ef8a9da3.png#clientId=u2c7b2728-c12a-4&from=paste&height=80&id=qc2aT&margin=[object Object]&name=1637216748(1).jpg&originHeight=105&originWidth=912&originalType=binary&ratio=1&size=10473&status=done&style=none&taskId=u99889adc-fdb8-437e-900c-8ff6d4a8f6e&width=699)
![1637217900(1).png](https://www.icode9.com/i/ll/?i=img_convert/2e61862a5fcab92f2390a29f886371ca.png#clientId=u2c7b2728-c12a-4&from=paste&height=223&id=u53011989&margin=[object Object]&name=1637217900(1).png&originHeight=258&originWidth=810&originalType=binary&ratio=1&size=15736&status=done&style=none&taskId=ufb2df4cc-b6d1-416c-92da-06096dd3ee8&width=699)
拓展:
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
![1637218964(1).png](https://www.icode9.com/i/ll/?i=img_convert/a0c76537af87177c47f12d73b5c906e8.png#clientId=u2c7b2728-c12a-4&from=paste&height=689&id=u25529644&margin=[object Object]&name=1637218964(1).png&originHeight=751&originWidth=845&originalType=binary&ratio=1&size=78647&status=done&style=none&taskId=u6ceb8c49-c558-433b-afcc-03e7c7341d7&width=775.5)
![1637219262(1).png](https://www.icode9.com/i/ll/?i=img_convert/5ce65f747a5c4c5e2e66b681c5a7f2a6.png#clientId=u2c7b2728-c12a-4&from=paste&height=391&id=udbaf8424&margin=[object Object]&name=1637219262(1).png&originHeight=389&originWidth=744&originalType=binary&ratio=1&size=24259&status=done&style=none&taskId=u337a6415-7c8a-47d7-8885-cfa81bb000a&width=748)
![1637219566(1).png](https://www.icode9.com/i/ll/?i=img_convert/3bc396e0b894f85dc6e3a807b6770593.png#clientId=u2c7b2728-c12a-4&from=paste&height=416&id=ub945947f&margin=[object Object]&name=1637219566(1).png&originHeight=649&originWidth=1165&originalType=binary&ratio=1&size=188609&status=done&style=none&taskId=u934e3236-df31-4da2-8a71-0f4fc6a9341&width=746.5)
3、配置数据库参数
- 查找数据库的默认配置文件的读取位置
mysql --help | grep my.cnf
#说明,按优先级加载my.cnf
![image.png](https://www.icode9.com/i/ll/?i=img_convert/522834659ee7c4bf1a2fb04d7056e31f.png#clientId=u2c7b2728-c12a-4&from=paste&height=121&id=u1fc6ee8c&margin=[object Object]&name=image.png&originHeight=97&originWidth=601&originalType=binary&ratio=1&size=9246&status=done&style=none&taskId=ufc4519cc-81e7-4590-86db-98283ce8317&width=747.5)
- 修改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端口。另外,新买的阿里云服务器,要主要是否配置对应的安全组策略。_
![](https://www.icode9.com/i/ll/?i=img_convert/0a79dec388407d096947195a8a423b5a.png#from=url&id=br9P1&margin=[object Object]&originHeight=232&originWidth=810&originalType=binary&ratio=1&status=done&style=none)![](https://www.icode9.com/i/ll/?i=img_convert/670e97ae41a24ac78f992ed837f3a2a6.png#from=url&id=XJATS&margin=[object Object]&originHeight=232&originWidth=810&originalType=binary&ratio=1&status=done&style=none)