Mysql
1.连接远程Mysql
Error:Client does not support authentication protocol requested by server; consider upgrading MySQL cli
服务器安装好mysql之后,并导入数据库表之后,在本地使用NavicatMysql进行连接时发现连接不上。
这是由于服务器上的mysql的root权限只允许本机登录,因此需要开放服务器端mysql远程登录的权限。
参考blog: https://blog.csdn.net/a648119398/article/details/122420906
mysql -uroot -p # 以root登录数据库
use mysql; ## 选择mysql数据库
select user,host from user; ## 查看用户访问端口
update user set host = '%' where user = 'root'; # 修改root允许任何ip访问
FLUSH PRIVILEGES; ## 刷新服务配置项
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; ## 授权root远程登录 后面的123456代表登录密码
如何还是连接不上,去看看服务器的防火墙中3306端口有没有开放!
Redis
1.TTL自动过期问题
在redis中存入数据,并对key设置过期时间后,发现没有到过期时间,其key就被删除了,这是什么原因?
原因如下:
redis.conf文件中可能注销了reqirepass这一行了,也就是你没有设置你的redis的密码。
所有取消注释,并设置你的redis访问密码即可!
2.redis跨域访问
# bind 127.0.0.1 ::1 注销掉这行,或者bind 你的服务器ip
supervised no # yes改为no
daemonize yes # 这里改为yes
requirepass pangqiaofang # 这里改为你的密码
然后让redis.conf生效并重启redis即可
source redis.conf
ElasticSearch
1.安装ELK
Docker安装ELK
pull elasticsearch
# 安装完docker之后,通过docker拉取
# 不安装docker的话,自己去下载安装包,然后解压安装
# 注意的是,ELK版本必须对应着安装
docker pull elasticsearch:7.12.1 # 拉取elasticsearch
docker network
docker run -d --name elasticsearch --net elk -P -e "discovery.type=single-node" elasticsearch:7.12.1 # 运行es
# 进入容器查看配置文件
docker exec -it es /bin/bash
# 查看配置文件
cd config
# 将配置文件拷贝一份出来,到自己的home目录下(或者别的目录,这里只是为了方便编辑)
docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml /home/es/config/
# 打开配置文件,修改配置
cd /home/es/config
vim elasticsearch.yml
# 在配置文件中添加以下4行
# 然后将修改后的配置文件,复制回原路径
docker cp /home/es/config/elasticsearch.yml es:/usr/share/elasticsearch/config/elasticsearch.yml
# 配制密码
docker exec -it elasticsearch /bin/bash
# 进入bin目录后,执行以下命令
./elasticsearch-setup-password interactive
# 然后输入密码如123456
# 然后重启es
docker stop elasticsearch
docker start elsaticsearch
访问域名:9200看看能不能看到es的信息
pull kibana
docker pull kibana: 7.12.1
# 运行kibana, --net需要跟es是同一个
docker run -d --name kibana --net elk -P -e "ELASTICSEARCH_HOSTS=http://[你es的ip]:9200" -e "I18N_LOCALE=zh-CN" kibana:7.12.1
# 修改配置文件,也是先拷贝一份出来
docker cp kibana:/usr/share/kibana/config/kibana.yml /home/kibana/
# 配置es的ip和用户名密码, 然后把配置写回原位置
docker cp /home/kibana/kibana.yml kibana:/usr/share/kibana/config/kibana.yml
# 然后重启kibana
IK分词器
github下载对应版本的ik-analysis
https://github.com/medcl/elasticsearch-analysis-ik/releases?page=6
下载完成后,通过xftp上传到服务器,然后解压到指定文件夹, 然后复制到elasticsearch的plugins文件夹下面
unzip elasticsearch-analysis-ik-7.12.1.zip /home/ik
# 复制
docker /home/ik elasticsearch:/usr/share/elasticsearch/plugins/
# 然后重启es
2.springboot连接elasticsearch
elasticsearch的官方文档,很重要!!!参照官方来弄是最好的
https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/connecting.html#_your_first_request
一开始参考的别人的blog,但是由于es7.x之后弃用了很多东西,所以就一直没有配置成功,还是参考官方的好!!!
这里搞了一天,开始没注意版本的问题还是挺让人头疼的,首先我们要注意的是,需要自己去查一下安转的es的版本与springboot的版本是否对应。
https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface.metadata
然后导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>7.17.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
配置连接:
@Configuration
public class ElasticSearchClientConfig {
@Bean
public RestClientBuilder restClientBuilder(){
// 这里是带密码的es, 如果你的es是在本地并且没有设置密码,那么就可以参照官方的这一段代码
/**
RestClient restClient = RestClient.builder(
new HttpHost("localhost", 9200)).build();
**/
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("elastic", "123456")); // 这里需要写你的elasticsearch的用户名和密码
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200)) // 这里的localhost换成你的服务器ip地址
.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(
HttpAsyncClientBuilder httpClientBuilder) {
return httpClientBuilder
.setDefaultCredentialsProvider(credentialsProvider);
}});
return builder;
}
}
测试:
@SpringBootTest
class DemoApplicationTests {
@Autowired
private RestClientBuilder restClientBuilder; // 能点过去自己写的配置文件
@Test
void contextLoads() {
}
@Test
void testCreateIndex() throws IOException {
// 测试连接
// RestClient build = restClientBuilder.build();
// System.out.println(build.isRunning());
// 创建索引请求
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);
CreateIndexRequest requests = new CreateIndexRequest("pqf_index"); // 你的索引的名字
CreateIndexResponse response = restHighLevelClient.indices().create(requests, RequestOptions.DEFAULT);
System.out.println(response);
}
}