Linux系统安装MySQL
Linux系统版本:CentOS 7 (MySQL的安装版本是与Linux版本有关的,请大家下载MySQL时注意)
1. 安装MySQL步骤
1.1 检查MySQL是否已经安装 yum list installed | grep mysql
如果已经有了就卸载掉, yum -y remove +数据库名称
1.2 MySQL依赖libaio,所以先要安装libaio
yum search libaio # 检索相关信息
yum install libaio # 安装依赖包
1.3 下载MySQL Yum Repository
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
1.4 添加 MySQL Yum Repository
添加 MySQL Yum Repository 到你的系统 repository 列表中,执行 yum localinstall mysql-community-release-el7-5.noarch.rpm
在执行过程中需要确认,输入y,成功显示
如果提示-bash: wget: 未找到命令,请先执行 yum install wget 安装 wget
1.5 验证下是否添加成功
yum repolist enabled | grep "mysql.*-community.*"
如果需要查看MySQL版本,执行 yum repolist all | grep mysql 可以看到 5.5, 5.7 版本是默认禁用的,因为现在最新的稳定版是 5.6
1.6 通过 Yum 来安装 MySQL
yum install mysql-community-server
Yum 会自动处理 MySQL 与其他组件的依赖关系,遇到 y\n 提示,输入 y 继续,执行完成会提示“完毕!”。此时MySQL 安装完成,它包含了 mysql-community-server、mysql-community-client、mysql-community-common、mysql-community-libs 四个包。
1.7 查看安装结果
执行:whereis mysql
可以看到mysql的安装目录是:mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
2. 启动和关闭MySQL
启动 MySQL Server :systemctl start mysqld (第一次启动会要求设置密码)
查看 MySQL Server 状态:systemctl status mysqld
关闭 MySQL Server:systemctl stop mysqld
重启MySQL Server:service mysqld restart
测试是否安装成功:mysql
3. 防火墙设置(如果服务器已经关闭了防火墙,可跳过此步骤)
远程访问 MySQL, 需开放默认端口号 3306.
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=3306/udp
firewall-cmd --reload
4. MySQL安全设置
4.1 服务器启动后,可以执行 mysql_secure_installation;
4.2 修改默认root账号密码
mysql -uroot -proot (-u后面是用户名,默认是root,-p后面是上面配置的密码)
show databases; (显示数据库名命令)
use mysql; (使用默认的mysql库)
update user set password="root" where user="root";
5. 错误解决方案
跳过登录过程,还可以直接修改my.cnf文件,在[mysqld]后面加一条, skip-grant-tables
重启mysql就好了,记得修改配置之后,再把这行代码去掉。
5.1 权限不够,或密码错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
我们要做的是命令行免密登录,修改root默认密码
(1)先停止MySQL服务器 systemctl stop mysqld
(2)使用safe模式,进行重启,因为是yum模式安装的,不需要找安装目录,直接运行命令就可以:./mysqld_safe --skip-grant-tables
注:如果你使用的安装包安装包的,就需要找到配置文件 /etc/my.cnf ,在配置文件里增加一行 skip-grant-tables 保存退出后执行后续操作,等密码修改完了,再把这句 skip-grant-tables 去掉。
(3)另外起一个服务器连接终端,使用root账户,无密码登录,修改root用户密码
mysql -u root
use mysql
update user set password=PASSWORD("你的密码") where User = 'root';
flush privileges; // 更新命令
(4)启动MySQL使用新密码登录
mysql -uroot -p 然后输入刚才重置的密码
5.2 使用MySQL工具时连接报错:Host XXX is not allowed to connect to this MySQL server
mysql -u root
use mysql;
select host from user where user='root'; (查询结果会有:127.0.0.1 localhost 等,需要把这些改成%通配符)
update user set host = '%' where user ='root'; 并删除其他的,只保留1条
5.3 匿名账户问题: ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
当你用root账号登录时,使用命令时会有上面的提示,并且使用show databases命令,发现没有mysql库了。
因为mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的,通过错误提示里的''@'localhost'可以看出来。
(1)先停止MySQL服务器 systemctl stop mysqld
(2)使用safe模式,进行重启,因为是yum模式安装的,不需要找安装目录,直接运行命令就可以:./mysqld_safe --skip-grant-tables
(3)另外起一个服务器连接终端,使用root账户,无密码登录,修改root用户密码
mysql -u root
use mysql
delete from user where USER='';
flush privileges; // 更新命令
(4)启动MySQL使用新密码登录
mysql -uroot -p 然后输入刚才重置的密码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通