Linux 系统 MySQL 完整安装配置教程:从卸载 MariaDB 到优化 my.cnf----《Hello MySQL!》(1)

文章目录

前言

在 Linux 系统中,许多发行版(如 CentOS 7)默认预装 MariaDB(MySQL 的分支项目),但在实际开发、部署场景中,我们常需要安装 MySQL 官方版本以满足特定兼容性或功能需求。然而,新旧数据库环境的冲突、YUM 源配置异常、初始密码登录、中文乱码等问题,往往成为新手入门的 "绊脚石"。​

本文将从卸载冗余环境出发,一步步带你完成 MySQL 官方 YUM 源配置、服务器安装、服务启停、客户端登录(含 3 种密码解决方案)、核心配置文件(my.cnf)优化等关键操作,全程附实操命令与效果截图,兼顾实用性与易懂性。无论你是 Linux 运维新手,还是需要快速搭建 MySQL 环境的开发者,都能通过本文快速上手,避开常见坑点,高效完成 MySQL 环境的部署与配置。

卸载不要的环境

bash 复制代码
先检查是否有mariadb在运行:
ps ajx |grep mariadb

如果是这样,没有其他东西的话,就说明没有在运行
如果不是这样的话,还需要:

systemctl stop mariadb.service来停止这个服务

ps axj |grep mariadb再次看来判断是不是停止成功了

检查系统安装包

bash 复制代码
rpm -qa | grep mariadb//mariadb是mysql的一个分支项目
rpm -qa | grep mysql

卸载这些包

可以一个一个删,也可以一块都删了

批量删除的方法:rpm -qa | grep mysql | xargs yum remove这是删的rpm -qa | grep mysql里面的
/etc/my.cnf里面的是MySQL/MariaDB的配置文件

/var/lib/mysql里面的是数据库的数据存储目录

这俩不会被主动删除的,--也不建议删

安装MySQL官方yum源

获取MySQL官方yum源:

http://repo.mysql.com/里面(查看网页源代码看的会更详细)

最好是安装跟自己系统一致的mysql版本,不然小心软件兼容性问题

然后通过rz指令把安装包搞到自己的系统里面

安装软件配置包:rpm -Uvh mysql57-community-release-el7.rpm

可以看ls /etc/yum/repos/d/ -l来看安没安装上

yum list |grep mysql可以查看有关mysql的软件包
之后就yum install -y mysql-community-server安装MySQL服务器的核心主程序包

这一步安装失败的问题:


通过这个解决:rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

使用程序

注意:与存储相关的网络服务器进程默认通常需要 root 权限启动,比如mysqld

但是mysql不需要哈,mysql是客户端,用于连接已启动的 MySQL 服务器然后进行操作
systemctl start mysqld.service或者systemctl start mysqld来启动MySQL的后台服务端

可以用ps ajx |grep mysqld来查看是不是启动成功了


这样就是启动成功了
mysql -uroot -p来启动客户端:


这里就会询问你密码:(有三种方法)

1.老版本的方法:没有密码,可以直接登录(password那里直接回车就行)

2.获取临时密码:sudo grep 'temporary password' /var/log/mysqld.log

3.打开mysql的配置文件vim /etc/my.cnf,在最后一栏放上skip-grant-tables,然后重启mysqld(重启可以用systemctl restart mysqld或者先关闭再启动)

这样就是登录成功了

配置my.cnf

打开/etc/my.cnf(my.cnf后面不加/!)

给补充成这样:


port=3306:指定 MySQL 服务监听的网络端口(MySQL默认用的是3306--所以这个不写也行)

character-set-server=utf8:设置 MySQL 服务器端的默认字符集为 utf8,解决中文等非英文字符的乱码问题

default-storage-engine=innodb:指定 MySQL 创建表时的默认存储引擎为 InnoDB

引申:datadir那个是对应的数据存放路径

引申:一些其他的指令

bash 复制代码
systemctl enable mysqld--让mysqld开机自启动
--这个一般是不需要的,因为云服务器也基本上是不关机的


systemctl daemon-reload--重新加载所有服务的配置文件(重启mysqld代替不了这个)
--修改了/usr/lib/systemd/system/mysqld.service里面的东西才需要
bash 复制代码
打断数据的话还是ctrl+c
ctrl+d是退出mysql客户端
相关推荐
郝学胜-神的一滴1 分钟前
C++20模板元编程 05:吃透变参模板,解锁编译期万能参数能力
服务器·开发语言·c++·windows·vscode
是店小二呀2 小时前
鸿蒙PC_Dart-Sass-ohos适配全记录
linux·运维·windows
充电zcx9 小时前
Linux:4:开发工具详解
linux·运维·服务器
C++ 老炮儿的技术栈9 小时前
我们在设计tcp协议时,要传一个字符串过去,报文:头十长度十内容,是否要把‘\0‘也填入,长度是否包含‘\0‘
开发语言·数据结构·c++·mfc·c
Navigator_Z11 小时前
LeetCode //C - 1252. Cells with Odd Values in a Matrix
c语言·算法·leetcode
语戚12 小时前
力扣 1621. 大小为K的不重叠线段的数目:动态规划(Java 实现)
java·算法·leetcode·动态规划·力扣·dp
码农客栈12 小时前
linux 交叉编译tslib
linux
青山木13 小时前
Hot 100 --- 最长有效括号
java·数据结构·算法·leetcode·动态规划
螺蛳粉 螺蛳粉13 小时前
MySQL 分布式集群系列 · 第五篇——全方位对比:NDB、MGR、主从复制、分库分表怎么选?
数据库·分布式·mysql
是隼人13 小时前
buuctf-pwn [NewStarCTF 2023 公开赛道]stack migration(64位栈迁移)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门