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 组和用户

groupadd mysql

useradd -r -g mysql mysql

 (3)进入 /usr/local/mysql 目录下,修改相关权限

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 文件.

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
[mysqld]
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
pid-file=/usr/local/mysql/mysql.pid    //注意了,小细节,这里的mysql.pid   ,mysql是linux的主机名。一般每个人主机名都是不一样的。
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
#skip-grant-tables

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

!includedir /etc/my.cnf.d

(9)为mysql配置环境变量

vim /etc/profile // 打开profile文件。

export MYSQL_HOME=/usr/local/mysql

export PATH=$PATH:$MYSQL_HOME/lib:$MYSQL_HOME/bin

立即生效:source /etc/profile

(10) 设置为开机自启动项。
依次执行一下代码。

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

service mysql start     //开启服务器

mysql -uroot -p    //登录进入mysql,然后提示输入密码

输入初始化过程中生成的临时密码,然后回车就行。进入一下页面。

到此,说明已经安装成功了。

(12)进入mysql后,修改密码。不然你什么也做不了

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: 直接回车登录

出现问题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进程已经在运行


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM