CentOS 7 安装MySQL5.7.20 及(忘记密码修改密码)
手动下载安装:
进入网站:https://downloads.mysql.com/ 选择 MySQL Community Server 点击选项卡 archives 找到你要安装的版本。
如: https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
cd /usr/local/src #下载安装包 wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz #解压安装包 tar -zxvf mysql-5.7/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz #修改文件夹名字 mv mysql-5.7/mysql-5.7.33-linux-glibc2.12-x86_64 /usr/local/mysql #创建data文件夹(如果没有) cd /usr/local/mysql mkdir data
创建用户和组
#查询系统中是否有mysql这个用户组 grep mysql /etc/group #添加mysql用户组 groupadd mysql #添加mysql用户 useradd -r -g mysql mysql #将mysql文件夹授权给mysql用户和用户组 chown -R mysql:mysql /usr/local/mysql 下面只是记录 useradd mysql -g mysql -M -s /sbin/nologin #增加一个名为CentOS Mysql的用户。 -g:指定新用户所属的用户组(group) -M:不建立根目录 -s:定义其使用的shell,/sbin/nologin代表用户不能登录系统。 之前讲解过MYSQL的编译安装,所以安装步骤这里就省略掉了
#mysql的配置文件 vim /etc/my.cnf [mysqld] port=3306 basedir=/usr/local/mysql datadir=/usr/local/mysql/data symbolic-links=0 max_connections=600 default-time-zone='+08:00' character_set_server=utf8 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 5、初始化mysql #先安装必要的依赖项 yum install libaio* -y 开始初始化mysql cd /usr/local/mysql #正常安装完成,会给出一个初始化的数据库密码,我们这里拷贝下来保存好,准备后面使用 ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 7、使用mysqld服务并设置开机启动 cp support-files/mysql.server /etc/init.d/mysqld //添加mysqld服务 chmod 755 /etc/init.d/mysqld //服务授权 chkconfig --add mysqld //添加开机启动 chkconfig --list //查看添加的开机启动服务 8、启动前的最后检查 (1)、检查启动服务的配置 vim /etc/init.d/mysqld 如果,mysqld服务的两项配置如下,检测正常,否则进行修改: basedir=/usr/local/mysql datadir=/usr/local/mysql/data (2)检查data文件夹的用户和用户组,以及权限是否足够,如果不属于mysql用户和用户组,按如下方式进行更改 chown -R mysql.mysql /usr/local/mysql/data chmod -R 775 /usr/local/mysql/data
启动及登录以及修改密码
service mysqld start cd /usr/local/mysql/bin ./mysql -uroot -p 修改密码 alter user 'root'@'localhost' identified by '新密码'; flush privileges;
引用 https://blog.csdn.net/z13615480737/article/details/78906598
也可:https://www.cnblogs.com/hello-/articles/9061836.html
CentOS7默认数据库是mariadb, 但是 好多用的都是mysql ,但是CentOS7的yum源中默认好像是没有mysql的。
上一篇安装的是5.6的但是我想安装5.7的 yum安装是最简单的 尝试过编译安装各种问题,最后就决定用yum。
1.卸载 先停掉mysql进程 没有安装过的可以直接跳过
pkill -9 mysqld
rpm -qa|grep -i mysql
1、查询是否使用rpm安装过mariadb数据库
rpm -qa|grep mariadb 如果存在数据库,先进行删除
rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64 // 强力删除模式,连带删除依赖
2、查询卸载的文件残留,也一并删除清空
find / -name mysql rm -rf /usr/local/mysql
用命令 yum -y remove
yum -y remove mysql-community-client-5.6.38-2.el7.x86_64
卸载不掉的用 rpm -ev
依次卸载 直到没有
2.下载mysql的repo源 这个安装的mysql5.7.20
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
[root@localhost src]# rpm -ivh mysql57-community-release-el7-8.noarch.rpm
[root@localhost src]# yum -y install mysql-server
(也可以指定安装目录 yum --installroot=/usr/local/mysql --releasever=/ -y install mysql-server )我没试,这样装环境变量配置都不用你管,装上直接启动就行。安装路径是默认的。
一路 y
根据步骤安装就可以了,
默认配置文件路径:
配置文件:/etc/my.cnf
日志文件:/var/log/var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid
配置 my.cnf vim /etc/my.cnf
- [mysqld]
- #
- # Remove leading # and set to the amount of RAM for the most important data
- # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
- # innodb_buffer_pool_size = 128M
- #
- # Remove leading # to turn on a very important data integrity option: logging
- # changes to the binary log between backups.
- # log_bin
- #
- # Remove leading # to set options mainly useful for reporting servers.
- # The server defaults are faster for transactions and fast SELECTs.
- # Adjust sizes as needed, experiment to find the optimal values.
- # join_buffer_size = 128M
- # sort_buffer_size = 2M
- # read_rnd_buffer_size = 2M
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
- server_id = 1
- expire_logs_days = 3
- # Disabling symbolic-links is recommended to prevent assorted security risks
- symbolic-links=0
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
不过安装完成后,密码为随机密码,需要重置密码。
4. 启动mysql服务
service mysqld restart
重置密码
[root@localhost ~]# grep "password" /var/log/mysqld.log
可以看到 输入 mysql -u root -p 密码 进入 第一次登陆 ,需要重置密码 要不什么也不能操作
接下来重置密码:5.7.20 为了安全密码 必须包含 数字字母符号
踩过的坑啊,设置了好几次。还有这ip不能是% 不知道为什么 反正第一次设置成%没成功 登上去之后再改就可以改了。
把密码改简单的方法 http://blog.csdn.net/z13615480737/article/details/78907697
alter user 'root'@'localhost' identified by 'Root!!2018';
最后记得刷新权限;
flush privileges
也可以 直接再添加新用户
CREATE USER ‘root‘@‘%‘ IDENTIFIED BY ‘您的密码‘;
grant all on *.* to 'root001'@'%' identified by 'Root@@' with grant option;
增加root用户指定可以任意IP登录,如果想限制只能让指定IP登录请把%替换成IP地址
问题:如果发现找不到密码!!!!!
解决:只能通过忘记密码的方式修改密码!!! 在安装的过程中发现找不到密码???折腾了好长时间 通过修改密码找回之后发现、原来之前安装的数据库在了,就没有生产新的数据库!!用的还是之前的配置。
2.看mysql启动了没?初始化数据库了没? 一般直接启动 数据库 就可以 用grep "password" /var/log/mysqld.log 看到随机密码了
重新启动mysqld
#/etc/init.d/mysqld restart ( service mysqld restart )
use mysql
update user set password=password("12345") where user="root";
mysql 5.7的数据库没有了password字段 用的是authentication_string字段
mysql> update mysql.user set authentication_string=password('root') where user='root' ;
flush privileges;
修改密码之后在改回来
#先停止mysql服务 systemctl stop mysqld #在里面增加一行:skip-grant-tables 保存并退出(:wq) vi /etc/my.cnf #启动服务 systemctl start mysqld mysql -u root 使用mysql中的mysql数据库: mysql> use mysql; 修改密码: update user set authentication_string = password("Szfore_68638") where user="root" ; 刷新数据库: flush privileges; 退出: quit; #先停止mysql服务 systemctl stop mysqld #在里面删除最后一行:skip-grant-tables 保存并退出(:wq) vi /etc/my.cnf #启动服务 systemctl start mysqld
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
解决方法:
cp -a /var/lib/mysql.bak/* /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql
两步都要执行!下面为其他查找的途径:
lsof -i:3306 #查看端口使用的进程 kill [PID]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现