1 mysql

1 安装

1
sudo pacman -S mysql 

2 初始化

初始化的时候会创建一个叫mysql的用户、一个mysql组、mysql的root用户、生成root用户初始密码。不要改路径,改了直接执行会报错。

注意,务必记下初始密码,后面用。

1
sudo mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql 

密码在倒数第二行


2024-03-27T19:34:24.585990Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost
Ssfpyoyt5-t<
2024-03-27T19:34:27.150507Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.

没记下来就执行卸载命令卸载mysql重新初始化,或者查看mysqld.log

1
cat /安装路径下/mysqld.log

3 设置mysql开机自启

1
2
#启动及自启
systemctl enable --now mysqld

4 修改密码

1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

5 可视化连接工具

推荐海狸,免费,能连接N多数据库

海狸官网:https://dbeaver.io/

6 mysql安全

执行mysql安全配置

1
mysql_secure_installation

选项内容包含

  • 选择密码验证策略强度,建议生产环境选择高强度的密码验证策略。

  • 设置 MySQL 密码

  • 移除匿名用户。

  • 设置是否禁止远程连接 MySQL

  • 删除 test 库及对 test 库的访问权限。

  • 重新加载授权表。

//TODO服务器上可不能这样安装完就了事,现在这样,数据库就是在网络上裸奔,数据库安全见我另一篇文章。

7 mysql连接问题

(1)远程连接问题

在用SQLyog或Navicat中配置远程连接MySQL数据库时遇到如下报错信息,这是由于MySQL默认不支持远

程连接。

查看系统数据库MySQL中的user表:

1
2
USE mysql;
SELECT Host,User FROM user;

可以看到root用户的当前主机配置信息为localhost。修改Host为通配符%

Host列指定了允许用户登录所使用的IP:

  • Host=localhost,表示只能通过本机客户端去访问。
  • Host=% ,表示所有IP都有连接权限。
1
2
UPDATE user SET Host = '%' WHERE User ='root';
FLUSH PRIVILEGES; -- Host修改完成后记得执行FLUSH PRIVILEGES使配置立即生效:

注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,可以设置为生产环境IP。

(2)使用SQLyog连接

出现这个原因是MySQL 8 之前的版本中加密规则是mysql_native_password,而在MySQL 8之后,加密规则是caching_sha2_password。

解决方案有两种,一种是升级SQLyog和Navicat(因此,新版SQLyog不会出现此问题),另一种是把MySQL用户登录密码加密规则还原成mysql_native_password。

**解决方法:**Linux下 mysql -uroot -p 登录你的 MySQL 数据库,然后 执行这条SQL:

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

然后再重新配置SQLyog的连接,重新填写密码,则可连接成功了。

2 redis

1 安装

1
yay -S redis

2 自启

1
systemctl enable --now redis

3 修改配置文件

(redis改为–>valkey)

1
vim /etc/valkey/valkey.conf

配置文件修改4处:

1 后端启动

daemonize yes

2 保护模式

protected-mode no

3 远程连接

注释掉

bind 127.0.0.1 -::1

4 redis访问密码

requirepass redis

3 nvm

//todo,见站内文章