Linux安装Mysql5.7.9遇到的问题和解决方案

导读:本篇文章讲解 Linux安装Mysql5.7.9遇到的问题和解决方案,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

上传到Linux中:

使用的工具为EditPlus:用于上传文件。
上传文件地址自定义:我使用的是 /use/local/下
通过mkdir 创建mysql文件夹:通过EditPlus连接linux找到这个文件夹把mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar上传到linux中

解压安装:

1.解压

上传到自己创建的文件夹中并且解压
通过:tar -xvf mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar
在这里插入图片描述
解压后有好多文件但是我们只需要安装4个rpm包,后面会讲解。

2. 通过命令查询本机是否安装mysql,如果有则需要删除,以免起冲突

查询:rpm -qa|grep -i mysql
删除:rpm -e mysql版本 --nodeps
在这里插入图片描述

3. 通过rpm安装

mysql解压后有很多rpm的包我们只需要安装4个

安装:rpm -ivh mysql包名称 --force --nodeps
在这里插入图片描述

4. 接下来是初始化数据库

我们使用如下几条命令均可,效果都是一样的:

mysql_install_db –datadir=/usr/local/mysql/lib
//必须指定datadir,执行后会生成~/.mysql_secret密码文件

mysqld –initialize
//新版的推荐此方法,执行生会在/var/log/mysqld.log生成随机密码
在这里插入图片描述

5. 更改mysql数据库目录的所属用户及其所属组,然后启动mysql数据库:

chown mysql:mysql /usr/local/mysql/lib -R systemctl start
mysqld.service //启动mysql数据库服务

  1. 根据查看初始密码 中的密码登录到mysql,更改root用户的密码,新版的mysql在第一次登录后更改密码前是不能执行任何命令的

查看初始密码

  • grep ‘temporary password’ /var/log/mysqld.log
  • cat /root/.mysql_secret
    通过cat /root/.mysql_secret 查看登录密码
    在这里插入图片描述
    通过密码登录但是提示错误拒绝访问root但是后面的password显示yes证明密码正确(输入密码时是不显示的)
    在这里插入图片描述

解决方案:

1.密码重置:

vi /etc/my.cnf
在[mysqld]下加上 skip-grant-tables,如
在这里插入图片描述
重启mysql服务: service mysqld restart
在这里插入图片描述
登陆mysql后就可以修改密码了:mysql -u root
在这里插入图片描述
更新用户密码:
update mysql.user set authentication_string=PASSWORD('修改的密码') where User='用户名称';
刷新权限:
flush privileges;
在这里插入图片描述

如果进入数据库运行数据库语句出现:

You must reset your password using ALTER USER statement before
executing this statement
(意思是:在执行此语句之前,您必须使用ALTERUSER语句来重置密码)
在这里插入图片描述
通过set password=password(密码);
在这里插入图片描述
这样就解决了

数据库恢复到Linux的数据库中:

通过Navicat 15 for Mysql恢复:连接到linux的服务器
在这里插入图片描述
连接出现问题:
在这里插入图片描述

  1. 改表法:可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称”%”

步骤:

登录服务器的mysql:mysql -u root -p密码
选择库:use mysql;
更改库中的用户:update user set host = '%' where user = 'root';
查询用户host和user的情况:select host, user from user;
  1. 授权法:例如,你想 myuser:用户名称,使用mypassword:用户密码,从任何主机连接到mysql服务器的话。

步骤

给用户权限:GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT 	OPTION; 
(给这个用户可以在任何ip通过指定的密码访问,并且拥有所有权限给的是ALL,可以操作任何数据库和表因为给了*.*)
刷新权限:FLUSH PRIVILEGES;

解决方案:
我们创建一个用户可以在任何ip下访问linux的数据库,又为了数据库安全我们创建一个my用户,只能对hnkr库下的所有表进行增删改查权限。
步骤:

1. 创建用户(并且直接设置成所有ip都可以登录)

#my表示你要建立的用户名,后面的123表示密码,
#localhost限制在固定地址localhost登陆,‘%’任何ip都可以登录
CREATE USER my@localhost IDENTIFIED BY ‘123456’;
在这里插入图片描述
创建完成后,在通过软件连接
在这里插入图片描述
可以看出已经连接成功,并且还有一个库,我们现在创建hnkr库会报错,原因是没有给该用户添加表的权限
解决:
登录root用户创建hnkr并且把控制权给my用户
在这里插入图片描述

2. 授权用户表权限

grant all privileges ON databasename.tablename TO 'username'@'host' identified by '用户密码' with grant option;

说明: privileges – 用户的操作权限,如SELECT , INSERT , UPDATE 等。如果要授予所的权限则使用 ALL;
databasename – 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如 * . *

例如:
给用户添加权限grant all privileges on hnkr.* to 'my'@'%' identified by '123456' with grant option;
(这个的意思是:给my用户增删改查的权限,但是只能对hnkr库下的表才能有这个权限,需要访问其他库那么就没有权限)

刷新权限flush privileges;
在这里插入图片描述
接着回到软件刷新数据库,已经显示hnkr库
在这里插入图片描述
点击库右键选择运行sql文件,选择自己想要恢复的sql文件
在这里插入图片描述
可以看出已经在恢复数据库
在这里插入图片描述
在这里插入图片描述

3. 设置与更改用户密码

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword')
#如果是当前登陆用户
SET PASSWORD = PASSWORD("newpassword");
#例如:
SET PASSWORD FOR 'foo'@'%' = PASSWORD("123456");
#更新用户的密码并且用户名称是phplam和主机为localhost的用户(一般root使用这个更改其他用户)
update mysql.user set password=password('新密码') where User="phplamp" and Host="localhost";

问题:Linux的mysql表中不存在的问题:

在CentOS安装的MySQL的配置文件中(/etc/my.cnf),是没有lower_case_table_names=1这行的。
在Windows安装的MySQL的配置文件中(my.ini),是有lower_case_table_names=1这行的。

lower_case_table_names=1的用途是让MySQL实现不区分大小写。
所以当时出了些毛病,后来才发现是这个的问题。连忙在CentOS中的my.cnf(/etc/my.cnf)的[mysqld]区段下增加:
lower_case_table_names=1

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/83899.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!