Linux-Mysql安装问题总结

Linux-Mysql安装问题总结

  • 准备工作
    • 首先查询服务器中是否存在mysql其他版本
    • 进入正题 ! 首先把整体流程列出来,如看问题收集请翻到最后
      • 1:压缩安装
      • 2:本地安装mysql-server服务
      • 3:修改文件权限
      • 4:修改MySQL配置文件
    • 安装过程问题总结
      • 安装时候无法启动报错:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
      • 启动之后进入mysql报错:Authentication plugin 'caching_sha2_password' cannot be loaded
      • 登录之后修改密码报错:Unknown column 'password' in 'field list'
      • 找到对应版本号之后,执行命令之后报错:The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
      • 刷新之后好使了 但是又报错:Operation ALTER USER failed for 'root'@'%'
        • 我是依旧还是报错,所以我就灵机一动,我就去创建用户再改密码权限也一样配置好使,把root账号名字改变,新创建一个root账号

准备工作

寻找Liunx版Mysql,版本看自己定,本文章适合绝大版本观看,本人运用8.0.11版本mysql。

首先查询服务器中是否存在mysql其他版本

命令:find / -name mysql进入该文件夹彻底删除!

进入正题 ! 首先把整体流程列出来,如看问题收集请翻到最后

1:压缩安装

 安装第三方依赖包:tar xvf mysql-80.11-1.el7.86_64.rpm-bundle.tar
 yum install perl -yyum install net-tools -y	
查看
mariadbrpm -qa|grep mariadb
结果显示:
mariadb-libs-5.5.60-1.el7_5.x86_64
卸载:
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps 

2:本地安装mysql-server服务

MySQLrpm -ivh
mysql-community-common-8.0.11-1.el7.x86_64.rpmrpm -ivh
mysql-community-libs-8.0.11-1.el7.x86_64.rpmrpm -ivh
mysql-community-client-8.0.11-1.el7.x86_64.rpmrpm -ivh
mysql-community-server-8.0.11-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-common-8.0.11-1.el7.x86_64.rpm

sudo rpm -ivh mysql-community-libs-8.0.11-1.el7.x86_64.rpm --(依赖于common)
sudo rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm --(依赖于libs)
sudo rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm --(依赖于client、common)

3:修改文件权限

修改/var/lib/mysql目录访问权限

chmod -R 777 /var/lib/mysql/


初始化:mysqld --initializechmod -R 777 /var/lib/mysql/*

启动数据库(在线安装mysql本地安装mysqld,我在线安装初始化后访问权限用的mysqld)

service mysql / mysqld start
查看密码:grep 'temporary password' /var/log/mysqld.log

本地登录(刚安装是没有远程访问权限的)

 mysql-u root -p"查看的初始密码,时间最新的一个"

修改密码

alter user user() identified by "123456";

设置MySQL允许远程连接

use mysql;update user set host ='%' where user ='root';flush privileges;

退出mysql编辑 exit

4:修改MySQL配置文件

vi /etc/my.cnf

在[mysqld]后添加

character_set_server = utf8bind-address=0.0.0.0

重启MySQL(同上)

 service mysql / mysqld restart

系统防火墙开放3306端口设置:firewall-cmd --zone=public --add-port=3306/tcp --permanent

应用

 firewall-cmd --reload 

远程连接要用最新版本的Navicat
(mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password

如果不想安装最新的Navicat可以修改MySQL8.0的加密规则:

登录设置:

mysql-u root -p"password" ALTER USER 'root'@'%' IDENTIFIED WITH 				mysql_native_password BY 'password'
刷新配置,重启(同上)
MySQLflush privileges;service mysql / mysqld restart

安装过程问题总结

安装时候无法启动报错:Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

解决方案
该问题的解决方案是
mysql没有自己权限,设置配置权限 /var/lib/mysql 所有文件权限 改成mysql.mysql
如果还不行参考以下方案

摘要:
解决不能通过mysql .sock连接MySQL问题 这个问题主要提示是,
不能通过 ‘/tmp/mysql .sock’连到服务器,
而php标准配置正是用过’/tmp/mysql .sock’,
但是一些mysql 安装方法 将 mysql .sock放在/var/lib/mysql .sock或者其他的什么地方,
你可以通过修改/etc/my.cnf文件来修正它,打开文件,可以看到如下的东东:

   [mysql d] 
  socket=/var/lib/mysql .sock 
  改一下就好了,但也会引起其他的问题,如mysql 程序连不上了,再加一点: 
  [mysql ] 
  socket=/tmp/mysql .sock 
  或者还可以通过修改php.ini中的配置来使php用其他的mysql .sock来连,

这个大家自己去找找
 或者用这样的方法:

ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock
成功了,就是这样
ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock

启动之后进入mysql报错:Authentication plugin ‘caching_sha2_password’ cannot be loaded

错误问题来源原因mysql自己生成密码规则自己不认可,我也没啥办法!

思路:不让登录就跳过呗
find /-name my.cnf
这个文件里面配置一个在[mysqld]下添加
skip-grant-tables 如图,
img
保存文件 重启 mysql service mysqld restart

查询这个my.cnf 时 我遇到两个问题
1:首先我查到了两个文件,正常是一个的,然后排查出哪个是自己的包下的 哪个不是
2:进入之后 这个文件内容为空,我就在网上随便找了一些内容粘贴进去的,然后配上完美运行

登录之后修改密码报错:Unknown column ‘password’ in ‘field list’

update user `set password=password(“新密码”) where user=”用户名”

以上是我当时用的命令 是报错的 原因是mysql5版本之后加入了加密系统,
没法去识别password这个字段所以是无法修改, 建议在网上找一下对应版本号的修改密码命令

找到对应版本号之后,执行命令之后报错:The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

错误描述:

mysql> grant all on cactidb.* to dbuser@'localhost' identified by '123';
ERROR 1290 (HY000): 
The MySQL server is running with the --skip-grant-tables 
option so it cannot execute this statement

解决方法:

先刷新一下权限表。

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on cactidb.* to dbuser@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)

刷新之后好使了 但是又报错:Operation ALTER USER failed for ‘root’@’%’

先登录mysqlmysql -u root -p
输入密码

mysql> use mysql;
mysql> select user,host from user;

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| admin            | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| zhangj           | localhost |
+------------------+-----------+

注意root,host是’%’

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

改成:

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

注意权限表中host

我是依旧还是报错,所以我就灵机一动,我就去创建用户再改密码权限也一样配置好使,把root账号名字改变,新创建一个root账号

\1.登录

MySQLmysql -u root -p

\ 2.添加新用户(允许所有ip访问)

 create user 'test'@'%' identified by '123456';
#test:用户名,%:所有ip地址,123456:密码

\3.创建数据库

CREATE DATABASE test_db  DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;

\4.为新用户分配权限

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

#授权给用户test,数据库test_db相关的所有权限,
并且该用户test在所有网络IP上都有权限,%是指没有网络限制

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON TUTORIALS.* TO 'zara'@'localhost' IDENTIFIED BY 'zara123';

#分配特定的权限

\5.刷新权限

flush privileges;

\6. 修改用户的IP访问权限

use mysql;update user set host = '%' where user ='test';	

\7. 授予管理员权限

grant all privileges on *.* to 'dba'@'1.2.3.4' IDENTIFIED BY 'mypassword' with grant option;	

授予用户dba访问所有库和表的权限,. 第一个是所有的库,第二个是所有的表
1.2.3.4是可以访问的IP地址,
with grant option是指允许用户dba,传递其拥有的权限给其他的用户

\8. 授予只读权限

grant select on *.* to 'select_only_user'@'%' IDENTIFIED BY 'your_password';

授予用户select_only_user 所有库和表的select 权限

\9. 收回权限

revoke insert on *.* from 'someone'@'%';

收回用户someone的所有库和表的插入权限revoke跟grant语法差不多,只需要把关键字 “to” 换成 “from” 即可,并且revoke语句中不需要跟密码设置。

注意:revoke可以回收所有权限,也可以回收部分权限。

\10. 要废掉已经拥有的with grant option权限

revoke grant option on *.* from somebody;

\11. 授予很多的权限

grant insert,select,update on test_db.test_tbl to someone@'localhost' identified by '123456';

grant 权限列表 on 数据库名.数据表名 to ‘用户名’@‘主机’ identified by ‘密码’ with grant option; 授予someone用户insert,select, update等权限

\12. 查看某个用户的权限

show grants for 用户名@主机;

\13. 删除用户

drop user '用户名'@'主机';

\14. 刷新权限

flush privileges;

你可能感兴趣的:(java,linux,mysql,数据库)