mysql8安装目录linux7.5_mysql(4)-linux环境centos7安装mysql8.0.19详细安装步骤

Centos7  Linux 上安装 MySQL8.0.19

首先下载安装包

官网地址:https://dev.mysql.com/downloads/mysql/

下载地址(64位):https://dev.mysql.com/downloads/file/?id=480751

需要 32 位的可以去官网地址找。

1. 安装&解压压缩包到目标位置

下载的文件应该是一个 mysql*.tar.xz 格式的压缩包,这里需要先对 .xz 解压

解压:tar xvJf ***.tar.xz   (注意:J是大写的字母 )

将解压出来的文件移动到 /usr/local/   且修改原来的名字mysql-8.0.19-linux-glibc2.12-x86_64修改为mysql

mv mysql-8.0.19-linux-glibc2.12-x86_64   /usr/local/

cd  /usr/local/

mv mysql-8.0.19-linux-glibc2.12-x86_64   mysql      (给mysql-8.0.19-linux-glibc2.12-x86_64重命名)

到这里我们就得到 MySQL的文件夹了,并且将他移动到了 /usr/local 目录下改名为 mysql 。

2.  新建mysql用户、组及目录在这里我们新建一个 mysql 用户组和用户用来运行 mysql,作用:可以提高系统的安全行性。

groupadd mysql

useradd -M -g mysql -s /sbin/nologin mysql

passwd mysql

理解:上面的命令第1句是新建一个用户组,第2句再新建一个用户并且不可以登录,不创建家目录,第3句命令给 mysql 用户修改密码。

3. 创建mysql数据仓库目录

注意在根目录下新建

cd /

mkdir  /data/mysql   数据仓库目录  (新建data文件夹以及mysql文件夹,用来存放mysql的数据仓库)

sudo chown -R mysql.mysql /data

理解:创建 /data 目录并且将目录属主设置为 mysql.  (注意是mysql.   是点)

或者

sudo mkdir -p /data/mysql

sudo chown -R mysql.mysql /data

4.接下来创建 mysql 的配置文件 /etc/my.cnf  (备注:/etc/下我本来的文件是没有my.cnf的  这是我新建的)

sudo vim /etc/my.cnf

原有的

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit fileformariadb according to the

# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]

log-error=/var/log/mariadb/mariadb.log

pid-file=/var/run/mariadb/mariadb.pid

#

# include all files from the config directory

#!includedir /etc/my.cnf.d

1 # MySQL 配置文件,2 #参考:http://blog.51cto.com/zhangxinqi/2178407

3 # https://www.cnblogs.com/lyq863987322/p/8074749.html

替换成以下内容:

# 数据库目录 /data/mysql

[client]

port=3306

# mysql socket 文件存放地址

socket=/tmp/mysql.sock

# 默认字符集

default-character-set=utf8

[mysqld]

server-id=1

# 端口

port=3306

# 运行用户

user=mysql

# 最大连接

max_connections=200

socket=/tmp/mysql.sock

# mysql 安装目录(解压后文件的目录)

basedir=/usr/local/mysql

# 数据目录(这里放在我们新建的 /data/mysql 下)

datadir=/data/mysql

pid-file=/data/mysql/mysql.pid

init-connect='SET NAMES utf8'

character-set-server=utf8

# 数据库引擎

default-storage-engine=INNODB

log_error=/data/mysql/mysql-error.log

slow_query_log_file=/data/mysql/mysql-slow.log

# 跳过验证密码(想跳过验证密码就放开即不注释 不想跳过即会输入密码,那就注释掉)

#skip-grant-tables

[mysqldump]

quick

max_allowed_packet=16M

EOF

到这里配置文件就建好了,上面是我自己的配置,在 mysql 启动的时候就会自动读取这个配置文件。

可能会有好几个地方有 mysql 的配置文件,它的读取顺序是这样的

/etc/my.cnf

basedir/my.cnf

datadir/my.cnf

–defaults-extra-file        #在读取全局配置文件之后,读取用户配置文件 (~/.my.cnf)之前,读取extra指定的参数文件

~/.my.cnf

所以我们在 /etc 下的配置文件 my.cnf 是第一个读取的文件,读到这个文件后就不会在读后面路劲中的配置文件。

5.mysql 初始化:

现在让我们进入解压后的 mysql 目录,进行mysql 初始化:

cd /usr/local/mysql   (进入解压后的 mysql 目录)

bin/mysqld --initialize

安装的结果是这样的:

0946576607418d74611e76ac9596b2c2.png

在橘色线框中的部分,是自动生成的 root 密码,待会儿我们要用这个密码进行登录。

----遇到问题:但是我是先卸载了centos7自带的数据库,又卸载了之前安装的数据库,所以在我重装 mysql 的时候,

我遇到了初始化的时候没有任何输出,也就是初始化完毕没有输入一个初始化密码让我保存,也没有找到日志文件,

结果不知道root的初始密码是什么,只能通过跳过登录验证的方式重置密码(方法:vi  /etc/my.cnf#skip-grant-tables想跳过验证密码就放开即不注释)

6.mysql启动

启动 MySQL

cd /usr/local/mysql/support-files/

./mysql.server  restart

./mysql.server start

OK,启动成功---------------------

-------------------------我启动的时候还遇到了其他问题

-------------------------1. 启动mysql报错The server quit without updating PID file!https://www.cnblogs.com/yiyaxuan/p/12559885.html

-------------------------2.

7. 使用命令行登录 MySQL

方法1:

cd /usr/local/mysql/support-files/

mysql -u root -proot    (这是登录的命令  如果有密码就用mysql -uroot -proot   第一个root是用户,第二个root是密码)

mysql -u root -p       (这是登录的命令  如果没有密码就用mysql -uroot -p   第一个root是用户 此时配置文件需要打开skip-grant-tables )

然后输入刚刚自动生成的 root 密码即可(上面输出了密码就使用刚刚的密码,上面如果没有输出密码,就打开skip-grant-tables 然后登录成功 然后给root设置个密码)

然后修改初始密码,出现报错:

方法2:

用这句命令的时候bin/mysql -u root -p

遇到报错1:

[root@localhost bin]# mysql -uroot -p

bash: mysql: 未找到命令...

解决方法:

原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。

首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/usr/local/mysql/bin/mysql,我们则可以这样执行命令:

# ln-s /usr/local/mysql/bin/mysql /usr/bin

以下是补充:

linux下,在mysql正常运行的情况下,输入mysql提示:

mysql command not found

遇上-bash: mysql: command not found的情况别着急,这个是因为/usr/local/bin目录下缺失mysql导致,只需要一下方法建立软链接,即可以解决:

把mysql安装目录,比如MYSQLPATH/bin/mysql,映射到/usr/local/bin目录下:

# cd/usr/local/bin

# ln-fs /MYSQLPATH/bin/mysql mysql

还有其它常用命令mysqladmin、mysqldump等不可用时候都可按用此方法解决。

注:其中MYSQLPATH是mysql的实际安装路径

原文参考:https://www.jb51.net/article/34622.htm

因为我root没有给我密码,所以先跳过验证,重启mysql

mysql -u root -p 回车键2次,进入修改,可以直接看后面的

1. 先把root的localhost改成%,设置远程登录:update userset host='%' where user='root';

2.修改加密规则

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

3.更新 root 用户密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_new_password';

flush privileges;

然后修改为不跳过验证,重启mysql,然后使用navicat连接,完美结束!

遇到报错2:

[root@localhost mysql]# bin/mysql -u root -p

Enter password:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

解决方法:

1. mysql -u root -p (命令未找到使用: ln -s /usr/local/mysql/bin/mysql /usr/bin)

2.cd /usr/local/mysql

[root@localhost mysql]# bin/mysql -u root -p

输入之前设置的密码-------进入命令行------------

开始去执行一句语句:bin/mysql -u root -p  ,,然后修改初始密码,继续出现报错3:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

解决方法:

最后执行以下三个命令之一成功。

下面三个命令任选其一

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new password'; (new password=root  也就是我的root用户密码为root)

alter user 'root'@'localhost' identified by 'new password';

ALTER USER USER() IDENTIFIED BY 'new password';

8. 使用Navicat工具去连接MySQL

1. 遇到第一个问题:Client does not support authentication protocol requested by server;

命令如下:

1、use mysql;

2、alter user 'root'@'localhost' identified with mysql_native_password by '********';

'root'@'localhost'

bb86a4fd38030699590df898bfcbb411.png

'root'@'localhost' 是你通过登录mysql然后输入select Host,User  from user; 看下你自己的root对应的Host那里是%还是localhost ,我的是% 所以我用的是:alter user 'root'@'%' identified with mysql_native_password by '********';

思考:怎么把localhost改成%?在文章后面

3、flush privileges;

2. 然后继续测试连接,遇到第2个问题:Access denied for user 'root'@'DESKTOP-8RFO9MH' (using pasword:YES)

Flush privileges;

CREATE USER 'root'@'%' IDENTIFIED BY 'root';

ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'%'-------------因为我已经新建了root用户,所以此句不再执行

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

select Host,User from user;

ALTER USER 'root'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'root' PASSWORD EXPIRE NEVER;

select Host,User from user;

重点执行以上标红色的三条语句。

然后重新连接Navicat,连接成功。

思考:怎么把localhost改成%?

MySQL8.0本地访问设置为远程访问权限

1.登录MySQL

mysql -u root -p

输入您的密码

2.选择 mysql 数据库

3.在 mysql 数据库的 user 表中查看当前 root 用户的相关信息

执行完上面的命令后会显示一个表格

查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。

创建用户

改密码

设置为远程登录

已有用户设置远程登录

GRANT ALL ON 表示所有权限,% 表示通配所有 host,可以访问远程。

5.刷新权限

所有操作后,应执行

flush privileges;

6.查看 root 用户的 host

再次执行步骤 2,你会发现 root 用户的 host 已经变成 %,说明我们的修改已经成功,可以远程访问了。

7.访问数据库

远程访问数据库的可视化工具比较多如:Navicat、SQLyog、MySQL workbench 等,我这里使用 Navicat

输入访问的 host 和密码,报 2059 错误,这是因为 MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式。

此问题有两种方法,一种是更新 Navicat 驱动来解决此问题,另一种是将 MySQL 用户登录的加密规则修改为 mysql_native_password,第一种方法我试过了没有起作用,我这里采用第二种方法。

8.修改加密规则

ALTERUSER'root'@'%'IDENTIFIEDBY'password'PASSWORDEXPIRENEVER;

9.更新 root 用户密码

ALTERUSER'root'@'%'IDENTIFIEDWITH mysql_native_passwordBY'your_new_password';

flush privileges;

use database_name;告诉mysql你要使用那个数据库;

service mysqld start/restart/stop  启动服务/重启服务/停止服务

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值