Mysql 8.x安装、修改root密码、加密方式,以及修改普通用户的加密方式、远程登录等问题
作者:mmseoamin日期:2024-02-06

一、Mysql安装:
1.查看是否装有mysql  (有输出表示已安装,无输出表示未安装;该命令可检测是否安装成功)

Mysql 8.x安装、修改root密码、加密方式,以及修改普通用户的加密方式、远程登录等问题,第1张

2.更新软件源中的所有软件列表: apt update

  1. apt-get 是较早的软件包管理工具,而 apt 是较新的封装工具,它被设计为更简洁易用的命令,apt 可以自动处理依赖关系,而 apt-get 需要手动安装依赖项。
  2. apt-get 命令与 dpkg 结合使用,用于安装、升级和删除软件包,而 apt 命令则是一个全新的命令,它可以直接安装、升级和删除软件包,也可以通过 apt-cache 命令查看软件包信息。
  3. apt-get 命令的更新软件包索引的命令是 "apt-get update",而 apt 命令的更新索引的命令是 "apt update"。
  4. apt-get 和 apt 命令的功能非常相似,但 apt 命令更加高级、简洁易用,如果你是新手,建议使用 apt 命令。

3.安装:  apt install mysql-server-8.0

​apt install mysql-server    //执行前,按两下tab键,获取可下载的版本​

    //提示可知,仅有 mysql-server-8.0可选

apt install mysql-server-8.0    //下载

4.安装完成后,重启mysql:

service mysql restart    //重启mysql

 或者(新的服务命令)

systemctl restart mysqld.service

二、修改root密码

设置新密码的命令,123456为设置的密码:

alter user 'root'@'localhost' identified by '123456';

三、登录及修改root用户密码方式

1、登录mysql。

mysql -u root -p

或者附带密码方式直接登录

mysql -uroot -p123456

2、通过执行以下命令查看对应用户的加密方式,也可以将user='root’改成比如user=‘test’,来查看用户test的加密方式。

use mysql;
select user,plugin from user where user='root';

3、执行命令修改加密方式

alter user 'root'@'localhost' identified with mysql_native_password by '你的密码';

或者

ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

4、使配置生效

 flush privileges;

补充:

我们可以在终端输入以下命令,来查看MySQL中的默认用户和密码

sudo cat /etc/mysql/debian.cnf


下图所框选的就是MySQL中默认的用户名和密码(每个人的密码都不一样)

Mysql 8.x安装、修改root密码、加密方式,以及修改普通用户的加密方式、远程登录等问题,第2张

 然后,我们根据这个默认的用户和密码就能登入到MySQL中

mysql -udebian-sys-maint -pXXXXXXXXXX(密码)

Mysql 8.x安装、修改root密码、加密方式,以及修改普通用户的加密方式、远程登录等问题,第3张


四、修改普通用户的加密方式:

比如:当使用mysql的可视化工具Navicat等,在进行初次连接数据库时,因为加密方式的原因报错,没办法连接成功;又或者连接 Django和Mysql配合使用,由于Django不支持新版本Mysql的加密方式,会出现如下两条报错,此时由于你Django项目的数据库用的用户非root,而是其他用户,所以需要修改其他用户的密码加密方式。

_mysql_exceptions.OperationalError: (2059, )

django.db.utils.OperationalError: (2059, )

修改方法:

1、输入登陆指令和密码并登陆:

mysql -u root -p

2、输入:

use mysql;

3、继续输入:

select user,host from user;

此时可以显示出各用户对应的host名,也就是修改指令中@后面的内容。

4、根据查询结果,紧接着输入修改加密方式指令:

例如:根据上面查询结果,test用户的host为%。所有指令如下:

alter user 'test'@'%' identified with mysql_native_password by 'test123';

注意:

(1)”%”欲连接到此Mysql数据库的客户端的IP地址,根据需求进行修正即可。%表示全部ip均可连接

(2)password就是Mysql数据库的test用户的password,根据实际情况需要修改

grant all privileges on *.* to test@'%' identified by 'test';

all privileges  表示:所有权限,也可以特指某些权限如,select,delect,insert等

*.*   表示:数据库服务器中 所有数据库,也可以特指某数据库的某个表,如:dbName.tableName

'%'  表示:允许除本机外的任何一台机器远程登录,也可以指定ip,如'localhost'本机,或

5、使配置生效

 flush privileges;

五、Mysql编码配置/可远程连接设置:

1、修改MySQL的配置文件,vim /etc/mysql/my.cnf

方式一:

Mysql 8.x安装、修改root密码、加密方式,以及修改普通用户的加密方式、远程登录等问题,第4张

将bind-address = 127.0.0.1,注释掉

#bind-address = 127.0.0.1

或者修改为:0.0.0.0

bind-address = 0.0.0.0

或者

方式二:vim /etc/mysql/mysql.conf.d/mysqld.cnf

Mysql 8.x安装、修改root密码、加密方式,以及修改普通用户的加密方式、远程登录等问题,第5张

2、修改root的host为% 即无论在哪台主机上都能够登陆

Mysql 8.x安装、修改root密码、加密方式,以及修改普通用户的加密方式、远程登录等问题,第6张

可以看到root的host为localhost即只有本地能够登陆

update user set host='%' where user='root' and host='localhost';

修改后的root的host为%,允许任何机器能够登陆

Mysql 8.x安装、修改root密码、加密方式,以及修改普通用户的加密方式、远程登录等问题,第7张

3、添加远程访问用户

mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

4、将MySQL服务进行重启

service mysql restart  

或者(新的服务命令)

systemctl restart mysqld.service

以前都用service命令管理mysql,现在liunx系统升级了,有了新的更好的方法管理系统进程,现在用systemctl命令管理mysql。

Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。 Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。 在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非总是如此。