月度归档:2019年07月

mysql 8.0.11 用Navicat远程无法连接

症状:

安装了mysql 8.0.11 之后本地可以登录,但是远程第三方工具无法连接,防火墙已经放通的,

解决之道:

首先登陆到mysql命令行:

mysql -u root -p
1
进入之后选择mysql库,用户信息都存在这个库的user表中

use mysql;
1
select host, user, authentication_string, plugin from user
1
可以看到,用户对应的主机是localhost,而不是%,所以不能连接。 
处理方法: 
1、授权root用户可以远程登陆

GRANT ALL ON *.* TO ‘root’@’%’;
1
2、刷新权限

flush privileges;
1
3、修改加密规则

ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘yourpassword’ PASSWORD EXPIRE NEVER; 
1
4、更新 root 用户密码

ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘yourpassword’;
1
5、刷新权限

FLUSH PRIVILEGES; 
1
测试连接。用 Navicat 连接数据库就可以正常连接了。

另,给普通用户远程连接的权限: 
1、授权 myuser 用户对指定库的所有表,所有权限并设置远程访问

GRANT ALL ON 指定库.* TO ‘myuser’@’%’;
1
2、更新 该 用户密码

ALTER USER ‘myuser’@’%’ IDENTIFIED WITH mysql_native_password BY ‘yourpassword’; 
1
3.刷新权限

FLUSH PRIVILEGES;
——————— 

关于JDBC连接数据库时出现的Public Key Retrieval is not allowed错误

问题描述
    最近在学习MyBatis框架,参考官方的文档通过配置文件的方式已经实现了通过Configuration配置文件和mapper映射文件访问mysql8数据库,于是想试试不使用XML文件去构建SqlSessionFactory,结合配置文件和官方文档,依次构建了DataSource,JdbcTransactionFactory,Configuration等等,并添加Mapper,在Mapper接口中通过注解配置了SQL语句,一步步的构建完成,前面都顺利执行没有抛出异常,当通过SqlSession拿到Mapper执行SQL语句的时候,抛出了Public Key Retrieval is not allowed异常。

解决过程
   通过一通百度,收集了可能导致这个问题的原因如下:

    1.mysql5及之前的版本使用的是旧版驱动”com.mysql.jdbc.Driver”,mysql6以及之后的版本需要更新到新版驱动,对应的Driver是”com.mysql.cj.jdbc.Driver”,但是这个驱动错误的信息是”Loading class `com.mysql.jdbc.Driver’. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.”,排除这个原因。

    2.连接数据库的url中,加上allowPublicKeyRetrieval=true参数,经过验证解决该问题。

    3.网上看到另外的解决 办法,修改default_authentication_plugin设置,在my.ini中增加[mysqld]default_authentication_plugin=mysql_native_password,然后mysql命令行执行ALTER USER ‘username’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;最后在url中添加时区参数serverTimezone=Asia/Shanghai。

总结
    我用的第二种方法解决了,网上说的第三种方法是在数据库重启后遇到的,问题的原因也不甚清楚。不知道是不是mysql8才会遇到的一些坑。我在使用第二种方法连接成功一次后,再去掉allowPublicKeyRetrieval=true参数,还是能够正常连接,难道数据库连接过一次之后会自动缓存相同连接的配置信息吗,不是很懂。有懂的大佬还请指教。
———————
作者:Yuriey
来源:CSDN
原文:https://blog.csdn.net/Yuriey/article/details/80423504
版权声明:本文为博主原创文章,转载请附上博文链接!

nacicat连接mysql8及JDBC连接mysql8报错解决

最近换电脑安装了mysql8,使用 nacicat连接发现报错1251- Client does not support authentication protocol 错误

从网上百度到原来mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 

解决问题方法有两种:

方法1.升级navicat驱动;

方法2.把mysql用户登录密码加密规则还原成mysql_native_password. 

这里采用方法2解决,具体操作步骤如下:

1.打开命令行小黑屏,进入MySQL的bin目录,然后输入mysql -u root -p,输入密码

2.然后输入

ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER; #修改加密规则

ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’; #更新一下用户的密码 

FLUSH PRIVILEGES; #刷新权限

3.输入修改的密码,再次测试连接,发现连接成功

 

Linux下MySQL表名不区分大小写的设置方法

MySQL表名不区分大小写的设置方法
在用centox安装mysql后,把项目的数据库移植了过去,发现一些表的数据查不到,排查了一下问题,最后发现是表名的大小写不一致造成的。

mysql在windows系统下安装好后,默认是对表名大小写不敏感的,但是在linux下,一些系统需要手动设置。

用root登录,打开并修改 /etc/my.cnf;在[mysqld]节点下,加入一行: lower_case_table_names=1。

重启mysql服务

service mysqld restart

/etc/inint.d/mysqld start

其中 lower_case_table_names=1 参数缺省地在 Windows 中这个选项为 1 ,在 Unix 中为 0,因此在window中不会遇到的问题,一旦一直到linux就会出问题的原因(尤其在mysql对表起名时是无法用大写字母的,而查询用了大写字母却会出查不到的错误,真是弄的莫名其妙)

将tomcat 7解压版注册为windows系统服务

一、修改service.bat文件(…tomcat 7binservice.bat)     

该文件中共修改两处即可(如果不存在这个文件从新下载对应版本的复制一份就行)

①:在文件的开头加入以下设置,分别是java的安装路径、Tomcat的安装路径及服务的名称

1
2
3
4
5
SET JAVA_HOME=D:programjdk1.6 
 
SET CATALINA_HOME=D:winsolrapache-tomcat-7.0.78
 
SET PR_DISPLAYNAME=TomcatSolr

如下图所示:

 ②:在文件中部找到以下内容并修改

1
2
rem Set default Service name 
set SERVICE_NAME=Tomcat7

修改为:

1
2
rem Set default Service name 
set SERVICE_NAME=TomcatSolr 

二、修改shutdown.bat和startup.bat文件

这两个文件修改的地方都相同在文件头加入以下内容即可:

1
2
SET JAVA_HOME=D:programjdk1.6 
SET CATALINA_HOME=D:winsolrapache-tomcat-7.0.78

如下图所示:

三、将tomcat 加入系统服务

 移除服务:

 

 四、配置JVM参数后重启tomcat服务生效

运行regedit   在注册表中搜索服务名:TomcatSolr    定位到Parameters/Java/Options 名称,编辑该内容,加入以下内容:

 

1
2
3
4
5
-Xms512m
-Xmx1024m
-XX:PermSize=128m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=48m

如下图所示:

 

Windows下开机自启动Nginx-将Nginx注册为Windows服务 Windows service wrapper 使用

Windows 服务包装器(Windows service wrapper),用于把.exe文件注册为windows服务。比如把Nginx.exe注册为windows服务,这样做的好处是,每次启动nginx时不用在命令行中输入命令,而且可以随windows系统启动而启动。不用担心服务器意外重启,服务挂掉。
    github地址:https://github.com/kohsuke/winsw/releases
    目前(2019年 1 月 17 日)最新版本是2.2.0版。有两种选择,WinSW.NET2.exe安装在.netframework2.0中,WinSW.NET4.exe安装在.netframework4.0中,根据安装环境选择需要下载的文件。如图1

 

 

 

   下载完成后,需要通过配置文件进行配置,参照图1中sample-minimal.xml或sample-allOptions.xml中所示。

 

使用方法
以WinSW.NET4.exe为例,下载WinSW.NET4.exe,放至待包装的exe文件夹中,它可以自定义名字,比如这里我们命名为nginxservice.exe。图中的.log文件都是启动后自动生成的。

 

最重要的是,要在nginxservice.exe同目录中新建一个同名的xml文件,对其配置。如前所述,该文件的格式在sample-minimal.xml或sample-allOptions.xml中所示。
这里所配置的是最简单的格式,更丰富的配置可以在sample-allOptions中查看。
其中id和name不能与系统中其它服务的冲突。
配置完成后,在命令行中进行安装,
nginxservice.exe install
卸载命令:nginxservice.exe uninstall

 

 
安装后运行services.msc打开服务查看器,就能看到该服务
 

 

 
查看它的属性,就是我们在配置文件中的配置信息。
 

 

xml和工具百度网盘下载地址:

链接:https://pan.baidu.com/s/1hafFMihUwpKMxodfTnJkjg
提取码:rgi4

 

 

使用docker安装mysql

第一步:使用docker pull 拉取docker hub仓库中mysql镜像 (注意备注)

l

mysql镜像版本如下:

 

 

 命令:docker pull mysql:8.0

 

备注:docker pull 默认到官方参考拉取  mysql:8.0   镜像名:镜像tag     

(ctrl+c)可以取消下载

 

官方地址为国外地址安装缓慢可进行配置为国内的加速镜像 ,具体操作见下面

 

第二步:修改镜像文件拉取地址

 

命令:vi /etc/docker/daemon.json

 

备注:insert 编辑内容如下      并esc  输入:wq 保存退出  

{
"registry-mirrors":["http://f1361db2.m.daocloud.io"]
}

备注:国内可用加速地址:

        https://registry.docker-cn.com

        http://hub-mirror.c.163.com

        https://3laho3y3.mirror.aliyuncs.com

        http://f1361db2.m.daocloud.io

        https://mirror.ccs.tencentyun.com

 

第三步:重启docker   重新进行【第一步】安装速度变快

命令:systemctl restart docker

第四步:查看镜像安装情况

命令:docker images

第五步:启动docker中镜像

命令:docker run --name mysql8.0 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0

备注 :–name 服务启动别名设置  -p端口映射 宿主机端口:镜像运行端口  -d 镜像名:tag 使用守护进程模式启动 -e:设置root帐号密码

第六步:查看运行的镜像

命令:docker ps -a

 

第七步:进入镜像 运行mysql

命令:docker exec -it mysql8.0 /bin/bash

备注:exec docker进入容器命令   -it 容器中服务别名 /bin/bash   表示命令行模式  与 -d 后台守护进行模式启动 形成两种运行方式   
进入容器中如图所示变化如下

 

命令:cd /usr/bin

命令:mysql -u root -p

备注: 在容器中进入用户目录启动mysql 输入密码连接成功

 

安装成功

 

其他就正常操作mysql了。

 

Linux服务器,服务管理–systemctl命令详解,设置开机自启动

Linux服务器,服务管理–systemctl命令详解,设置开机自启动

syetemclt就是service和chkconfig这两个命令的整合,在CentOS 7就开始被使用了。
摘要: systemctl 是系统服务管理器命令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
任务 旧指令 新指令
使某服务自动启动 chkconfig –level 3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig –level 3 httpd off systemctl disable httpd.service
检查服务状态 service httpd status systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)
显示所有已启动的服务 chkconfig –list systemctl list-units –type=service
启动某服务 service httpd start systemctl start httpd.service
停止某服务 service httpd stop systemctl stop httpd.service
重启某服务 service httpd restart systemctl restart httpd.service

 

下面以nfs服务为例:

1.启动nfs服务

systemctl start nfs-server.service

2.设置开机自启动

systemctl enable nfs-server.service

3.停止开机自启动

systemctl disable nfs-server.service

4.查看服务当前状态

systemctl status nfs-server.service

5.重新启动某服务

systemctl restart nfs-server.service

6.查看所有已启动的服务

systemctl list -units --type=service

开启防火墙22端口

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

如果仍然有问题,就可能是SELinux导致的

关闭SElinux:

修改/etc/selinux/config文件中的SELINUX=”” 为 disabled,然后重启

彻底关闭防火墙:

sudo systemctl status  firewalld.service
sudo systemctl stop firewalld.service          
sudo systemctl disable firewalld.service
 

centos7下安装docker

一 环境准备

1、虚拟机or物理机

2、centos7系统(稳定,对docker支持友好)

二 安装过程

step1:使用yum命令进行安装

yum install -y docker

备注:-y 表示不询问 使用默认配置进行安装,等待提示  完毕!

step2:查看是否安装成功

yum list installed | grep docker

备注:命令为 查看yum安装完成文件列表 并 筛选docker安装信息 如下

step3:启动docker服务

systemctl start docker

step4:查看是否启动成功

systemctl status docker

step5:使用docker命令 

docker images

备注:查看docker已经安装的镜像 裸机状态下为空

 

设置docker开机自启动如下:

systemctl enable docker

使用如上命令就可以设置docker开机自启动了