linux-Mysql5.27安装(包含大量错误解决)

一:简介

下载路径:https://dev.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

系统环境: Centos7  Mysql5.7 *

二:安装步骤

2.1 卸载旧的mysql

2.1.1使用以下命令查看当前安装mysql情况,查找以前是否装有mysql

1

rpm -qa|grep -i mysql

显示如下:

     MySQL-client-5.5.25a-1.rhel5

     MySQL-server-5.5.25a-1.rhel5

停止mysql服务、删除之前安装的mysql

删除命令:rpm -e –nodeps 包名

1

2

rpm -ev MySQL-client-5.5.25a-1.rhel5

rpm -ev MySQL-server-5.5.25a-1.rhel5

如果提示依赖包错误,则使用以下命令尝试

1

rpm -ev MySQL-client-5.5.25a-1.rhel5 --nodeps

如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1

则用以下命令尝试:

1

rpm -e --noscripts MySQL-client-5.5.25a-1.rhel5

2.1.2 查找之前老版本mysql的目录、并且删除老版本mysql的文件和库

find / -name mysql

不该删的尽量不要删。

rm -rf /usr/local/env/mysql/mysql   (图中没有,因为我已经删除过了。)

删除/etc/init.d/下跟mysql有关的全部文件,一般包括mysql文件或mysqld文件。

[root@ali228 mysql]# rm -rf /etc/init.d/mysql
[root@ali228 mysql]# rm -rf /etc/init.d/mysqlId

2.1.3注意:卸载后Mysql的配置文件/etc/my.cnf不会删除,需要进行手工删除

1

rm -rf /etc/my.cnf

2.1.4 删除mysql用户和用户组 

再次查找机器是否安装mysql

rpm -qa|grep -i mysql

无结果,说明已经卸载彻底,接下来直接安装mysql即可

2.2安装Mysql

2.2.1 下载安装包mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
安装包路径: https://dev.mysql.com/downloads/mysql/5.7.html#downloads

上传mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz到/usr/local/env/mysql目录下并解压

解压后:

cd mysql

2.2.2 添加用户组mysql和用户mysql,并将其添加到mysql用户组中

#  groupadd mysql

#  useradd -r -g mysql mysql

注意:useradd -r参数表示mysql用户是系统用户,不可用于登录系统

        useradd -g参数表示把mysql用户添加到mysql用户组中

2.2.3 检查是否安装了 libaio

[spark-E201@master mysql]$    rpm -qa | grep libaio

如果没有安装,使用如下命令安装

yum search libaio

如果,一会Mysql初始化的时候报错: 

mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

再试试这个命令,或者你一开始就用这个命令

yum install libaio

如果报错:

bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

yum -y install numactl

以上两个命令可以提前下载使用

2.2.4 配置my.cnf文件

[spark-E201@master ~]$    touch /etc/my.cnf

[mysql]  
 
# 设置mysql客户端默认字符集  
 
default-character-set=utf8   
 
socket=/tmp/mysql.sock
 
[mysqld]  
 
#skip-name-resolve  
 
#设置3306端口  
 
port=3306   
 
socket=/tmp/mysql.sock
  
 
# 设置mysql的安装目录 
 
basedir=/usr/local/env/mysql/mysql  
 
# 设置mysql数据库的数据的存放目录 
 
datadir=/usr/local/env/mysql/mysql/data  
 
# 允许最大连接数  
 
max_connections=200  
 
# 服务端使用的字符集默认为8比特编码的latin1字符雿 
 
character-set-server=utf8  
 
# 创建新表时将使用的默认存储引擿 
 
default-storage-engine=INNODB  
 
#lower_case_table_name=1  
 
max_allowed_packet=16M  
# 如果是装CDH的时候要装Mysql,则再添加

default-storage-engine = innodb

innodb_file_per_table

collation-server = utf8_general_ci

init-connect = 'SET NAMES utf8'

character-set-server = utf8

2.2.5 创建data文件夹

data文件夹一定要再初始化之前创建好!

[spark-E201@master mysql]$    mkdir data

2.2.6 将mysql目录的所属用户和组改为mysql

[spark-E201@master mysql]$  chown -R mysql:mysql ./

2.2.7 初始化mysqld 生成初始化密码

./bin/mysqld --initialize --user=mysql --basedi=/usr/local/env/mysql/mysql --datadir=usr/local/env/mysql/mysql/data

结尾: *2wo5H 就是初始化的密码。

3 常规配置

3.1 设置开机启动

3.1.1 复制mysql.server脚本到资源目录,并赋予执行权限:

  1. [root@master mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

  2. [root@master mysql]# chmod +x /etc/rc.d/init.d/mysqld

3.1.2 将 mysqld 服务加入到系统服务并检测是否生效:

[root@master mysql]#    chkconfig --add mysqld
[root@master mysql]#    chkconfig --list mysqld
 
Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.
 
      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.
 
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

得到如下结果说明生效。

注: 查看启动项:chkconfig --list | grep -i mysql        删除启动项:chkconfig --del mysql

启动mysqld:

[root@master mysql]#  service mysqld start

3.2 配置环境变量
3.2.1 打开/etc/profile配置文件,添加如下内容:
#mysql环境变量
PATH=$PATH:/usr/local/env/mysql/mysql/bin
export PATH
3.2.2 执行命令,使其生效:
[root@master mysql]#  source /etc/profile

3.2.3 校验是否成功:

[root@master mysql]   echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/env/jdk/jdk8/jdk1.8.0_171/bin:/root/bin:/home/env/jdk/jdk8/jdk1.8.0_171/bin:/usr/local/env/mysql/mysql/bin

3.3  初次登录 修改访问密码

3.3.1 注意: 此时密码使用上面自动生成的初始化密码:5HHhd:*2wo5H 即可

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

那么首先很有可能是你密码输错,可以再试一次。如果还是不行,那么就 重置密码

重置密码办法:

1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:

#vim /etc/my.cnf(注:windows下修改的是my.ini)

在文档内搜索mysqld定位到[mysqld]文本段:
/mysqld(在vim编辑状态下直接输入该命令可搜索文本内容)

在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下图所示:

保存文档并退出:

#:wq
2.接下来我们需要重启MySQL:

/etc/init.d/mysql restart(有些用户可能需要使用/etc/init.d/mysqld restart)

3.重启之后输入#mysql即可进入mysql。

 

4.接下来就是用sql来修改root的密码

mysql> use mysql;
mysql> update user set password=password("你的新密码") where user="root";
mysql> flush privileges;
mysql> quit

到这里root账户就已经重置成新的密码了。

注意,如果在这里又报错: ERROR 1054 (42S22): Unknown column 'password' in 'field list'

解决办法:

错误的原因是 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string

用这个试一下: update user set authentication_string=password("你的新密码") where user="root";

 

5.编辑my.cnf,去掉刚才添加的内容,然后重启MySQL。大功告成!

 网上有很多关于这个问题的解决说明,很多刚接触的朋友可能比较迷惑的是在自己的平台上找不到my.cnf或者my.ini文件,如果你是Linux,使用如下方式可以搜索到:

至于windows平台,去安装目录下找一下my.ini吧。

 

 

3.4使用navicate远程连接报错
如果使用navicate进行远程连接访问,报如下错误:

解决方法如下:

3.4.1 关闭mysql服务
[root@baidu64 mysql]# service mysql stop
Redirecting to /bin/systemctl stop mysql.service
3.4.2 修改/etc/my.cnf修改为无密码登录
在my.cnf配置文件添加如下内容:

# mysql无密码登录
skip-grant-tables
3.4.3 重启mysql服务
[root@baidu64 mysql]# service mysql restart
Redirecting to /bin/systemctl restart mysql.service
3.4.4 无密码登录mysql
注意: 此时登录不带p参数:

[root@baidu64 mysql]# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.18 MySQL Community Server (GPL)
 
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql>
3.4.5 再次修改mysql密码:
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> update mysql.user set authentication_string=password('123456') where user='root' ;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 2  Changed: 1  Warnings: 1
mysql>
3.4.6 然后将my.cnf无密码登录配置去掉(就是上面刚加的那句话)

3.5.7 退出mysql,并重启:mysql> quit
Bye
[root@baidu64 mysql]# service mysql restart
Redirecting to /bin/systemctl restart mysql.service
[root@baidu64 mysql]#
3.4.8 再次使用navicat连接:

3.5 如果是CDH的话,要进行创建用户,授权等操作

执行:   

grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;         #赋予root用户外连接访问权限

grant all on *.* to 'scm'@'%' identified by 'scm'  with grant option;

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

再改一遍密码, 但是语句不和上面一样

mysql> SET PASSWORD = PASSWORD('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> update user set authentication_string=PASSWORD('123456') where User='root';
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 1

如果还初始化密码报错:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before

这个其实与validate_password_policy的值有关。

validate_password_policy有以下取值:

这里写图片描述

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。
必须修改两个全局参数:

首先,修改validate_password_policy参数的值

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

validate_password_length(密码长度)参数默认为8,我们修改为1

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)


最后:

flush privileges;  #刷新配置

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

create database hue  DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

create database Monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

建立上述四个数据库备用   

 

如果觉得可以就评论一下谢谢。

 

参考:

https://blog.csdn.net/qq_35206261/article/details/81321201

https://my.oschina.net/u/1386996/blog/1559297

https://blog.csdn.net/memory6364/article/details/82426052

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李指导、

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值