Centos 7 安装Mysql 8.0.22数据库、远程设置及修改用户密码详情,以及遇到的一些问题统计
1.进官网,选择适合自己版本的linux下的MYSQL版本。
下载地址:https://dev.mysql.com/downloads/mysql/
选择系统版本及运行版本位数。
选择需要下载的安装包
等待下载完成~~~~~~~~~
快捷下载地址:https://dev.mysql.com/downloads/file/?id=499500
可能会需要Oracle登录:
Oracle帐号:2696671285@qq.com
Oracle密码:Oracle123
2.将下载好的mysql-8.0.22-el7-x86_64.tar.gz 上传至linux系统中进行解压 。
(1)将这个文件上传至/home/mysql/目录下,首先查看 /home/mysql/目录下的文件。以确保系统中有这个文件。
(2)解压mysql-8.0.22-el7-x86_64.tar.gz,生成mysql-8.0.22-el7-x86_64解压目录
命令:tar xf mysql-8.0.22-el7-x86_64.tar.gz
3.进行mysql安装
(1)将mysql-8.0.15-el7-x86_64 安装到 /usr/local/mysql 下
命令:mv mysql-8.0.22-el7-x86_64/* /usr/local/mysql
(2)为系统添加mysql 组和用户
1 2 3 | groupadd mysql useradd -r -g mysql mysql |
(3)进入 /usr/local/mysql 目录下,修改相关权限
1 2 3 | cd /usr/local/mysql //进入/usr/local/mysql 目录 chown -R mysql:mysql ./ //修改当前目录为mysql用户 |
(4)mysql初始化操作,记录下临时密码,之后第一次登录的时候会用到
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data //运行完成会生成一个暂时的密码。
结果如下
(5)查看初始化过程中有没有自动生成my.cnf 文件.
1 2 | cd /etc/ //进入/etc/目录下 ls | grep my.cnf //查看是否有my.cnf 文件。有则会产生结果。 |
(6) 初始化生成my.cnf 文件,则跳至第八步,修改配置文件,未生成执行第七步。
(7) 如果初始化过程中没有生成my.cnf , 新建一个my-defalut.cnf文件,将其复制到/etc/my.cnf
touch my-defalut.cnf //新建一个文件
chmod 755 my-defalut.cnf // 赋予权限
cp my-defalut.cnf /etc/my.cnf // 将文件复制到/etc/ 目录下,并更名为my.cnf 文件名。
(8)my.cnf 的信息如下
[root@mysql etc]# cat my.cnf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data port=3306 socket=/tmp/mysql.sock sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES symbolic-links=0 [mysqld_safe] log-error=/usr/local/mysql/data/mysql.log pid-file=/usr/local/mysql/data/mysql.pid # # include all files from the config directory # !includedir /etc/my.cnf.d |
(9)为mysql配置环境变量
vim /etc/profile // 打开profile文件。
1 2 3 | export MYSQL_HOME=/usr/local/mysql export PATH=$PATH:$MYSQL_HOME/lib:$MYSQL_HOME/bin |
立即生效:source /etc/profile
(10) 设置为开机自启动项。
依次执行一下代码。
1 2 3 4 5 | cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql chmod +x /etc/init.d/mysql //添加可执行权限。 chkconfig --add mysql // 注册启动服务 |
附加:
让MySQL数据库随系统的开机而启动:chkconfig mysqld on
关闭MySQL的开机自启动:chkconfig mysqld off
输入chkconfig --list //查看是否添加成功,以下显示表示添加成功。
(11)开启服务器,登录进入mysql
1 2 3 | service mysql start //开启服务器 mysql -uroot -p //登录进入mysql,然后提示输入密码 |
输入初始化过程中生成的临时密码,然后回车就行。进入一下页面。
到此,说明已经安装成功了。
(12)进入mysql后,修改密码。不然你什么也做不了(报错请查看下方问题1解决办法)
alter user 'root'@'mysql' identified by 'your_password'; >>>本人的主机名在安装之前改为了mysql,这里需要注意一下
然后 exit; 退出,重新进入,进行测试。
show databases;
到此,关于安装mysql 8.0.22版本的全部过程就已经结束了!
1.设置远程登录
mysql -u root -p
Enter password: 输入密码
mysql> use mysql; >>>进入mysql数据库
mysql> select host, user, authentication_string, plugin from user; >>>查看主机,用户,密码及认证插件类型
mysql> update user set host='%' where user='root'; >>>更新root用户为所有主机
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码'; >>>修改用户的认证插件类型及密码
mysql> grant all privileges on *.* to 'root'@'%' with grant option; >>>给所有用户赋予root用户权限
2.创建新用户:
mysql> create user '用户名'@'主机' identified by '密码'; >>>创建用户
mysql> grant all privileges on *.* to 'root'@'%' ; >>>给所有用户赋予root用户权限
3.修改用户密码:
mysql> update user set authentication_string='' where user='用户名'; >>>更新用户密码为空
mysql> ALTER USER '用户名'@'主机' IDENTIFIED WITH mysql_native_password BY '新密码'; >>>修改用户认证插件类型及新密码
4.单独修改密码:
MySql 从8.0开始修改密码有了变化,在user表加了字段authentication_string,修改密码前先检查authentication_string是否为空。
mysql 5.7.9以后废弃了password字段和password()函数;authentication_string:字段表示用户密码,而authentication_string字段下只能是mysql加密后的41位字符串密码。所以需要用一下方式来修改root密码:
格式:ALTER user '用户名'@'主机' IDENTIFIED BY 'newpassword';
mysql> use mysql;
mysql> select host, user, authentication_string, plugin from user;
mysql> update user set authentication_string='' where user='用户名'; >>>先更新用户密码为空
mysql> ALTER user 'root'@'%' IDENTIFIED BY '123456'; >>>再设置密码
mysql> flush privileges; >>>刷新权限
5.MySQL启动相关命令:
service mysql start
service mysql stop
service mysql restart
6.修改认证插件类型:
编辑配置文件/etc/my.cnf,在[mysqld]后面增加认证插件类型,如下:
vim /etc/my.cnf
[mysqld]
default-authentication-plugin=mysql_native_password
保存,退出!
重启:service mysql restart
重启mysql配置才会生效!
7.修改是否可以信任存储函数创建者
简单介绍一下,当二进制日志启用后,这个变量就会启用。它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。如果设置为0(默认值),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限。 设置为0还强制使用DETERMINISTIC特性或READS SQL DATA或NO SQL特性声明函数的限制。 如果变量设置为1,MySQL不会对创建存储函数实施这些限制。 此变量也适用于触发器的创建。
那么为什么MySQL有这样的限制呢? 因为二进制日志的一个重要功能是用于主从复制,而存储函数有可能导致主从的数据不一致。所以当开启二进制日志后,参数log_bin_trust_function_creators就会生效,限制存储函数的创建、修改、调用。
如果数据库没有使用主从复制,那么就可以将参数log_bin_trust_function_creators设置为1。
mysql> set global log_bin_trust_function_creators=1;
这个动态设置的方式会在服务重启后失效,所以我们还必须在my.cnf中设置,加上log_bin_trust_function_creators=1,这样就会永久生效。
编辑配置文件/etc/my.cnf,在[mysqld]后面增加是否信任配置,如下:
vim /etc/my.cnf
[mysqld]
log_bin_trust_function_creators=1
保存,退出!
重启:service mysql restart
重启mysql配置才会生效!
8.设置mysql免密登录,修改密码
编辑配置文件/etc/my.cnf,在[mysqld]后面增加免密登录配置,如下:
vim /etc/my.cnf
[mysqld]
skip-grant-tables
保存,退出!
重启:service mysql restart
重启mysql配置才会生效!
再次登录时,密码为空,可直接登录。
[root@mysql etc]# mysql -u root -p
Enter password: 直接回车登录
9.更改用户名及host,重命名用户
mysql > RENAME USER 'testuser'@'%' to 'testuser'@'localhost';出现问题1
1.安装Mysql8.0后,登录mysql,修改密码的时候使用alter user 命令发生报错,提示使用ALTER USER修改密码,(我已经用这个命令,就很奇怪):
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
折腾了一会~~~~~
用set 命令直接赋值,就可以改了
解决问题
1、需要执行如下语句修改密码:
set password='your password';
2、如果密码符合Mysql要求,会修改成功。如果出现以下错误信息:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
执行如下两条语句:
set global validate_password.policy=0;
set global validate_password.length=1;
然后再次执行步骤1中的语句即可。
出现问题2
解决办法:
需要授权远程登录主机,上面有做👆
出现问题3
解决办法:
修改远程用户的认证插件类型
use mysql;
select user,authentication_string,host from user; >>查看主机,用户,密码及认证插件类型
ALTER USER '用户'@'主机' IDENTIFIED WITH mysql_native_password BY '密码'; >>更新用户的认证插件类型及密码
flush privileges; >>刷新权限
出现问题4
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxx';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
解决办法:
[root@mysql ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables >>>跳过密码登录
[root@mysql ~]# service mysql restart
[root@mysql ~]# mysql -u root -p >>>无密码,回车
mysql> use mysql;
mysql> select host, user, authentication_string, plugin from user;
mysql> update user set authentication_string='' where user='root';
mysql> flush privileges;
mysql> quit
Bye
[root@mysql ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables >>>删除,或者禁掉
[root@mysql ~]# service mysql restart
[root@mysql ~]# mysql -u root -p >>>密码为空,回车登录
mysql> use mysql;
mysql> select host, user, authentication_string, plugin from user;
mysql> ALTER user 'root'@'%' IDENTIFIED BY 'root123';
mysql> flush privileges;
mysql> quit
Bye
[root@mysql ~]# mysql -u root -p
Enter password: root123
出现问题5
问题描述:
mysql启动的时候报错,如下:
问题分析思路:
1.权限问题
给所安装的mysql8目录授权mysql8用户
chown -R mysql8:mysql8 /usr/local/mysql8
2.防火墙问题
vim /etc/selinux/config
SELINUX=disabled
解决办法:
修改/etc/init.d/mysql8(我这里装了两个mysql,所以取名不一样),如下:
在mysqld_safe,找到start模块,添加--user=root到mysqld_safe 即可
启动成功!
ps aux | grep mysql >>>查看mysql进程已经在运行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统