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进程已经在运行

posted @   西瓜君~  阅读(958)  评论(0编辑  收藏  举报
编辑推荐:
· .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 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示