人们不是嘲笑你的梦想
他们嘲笑的是你的实力

Linux安装Mysql8及改为忽略大小写、允许公网访问

前言

在debian11上安装了mysql8,导入以前的项目发现一些问题,此处记录修改过程

安装mysql8

安装依赖

sudo apt update

sudo apt install gnupg lsb-release wget

添加mysql apt存储库

wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb

dpkg -i mysql-apt-config_0.8.22-1_all.deb

这会出现一个配置对话框,让你选择mysql版本即可选择mysql8,其他都点ok即可

安装期间会出现一个root用户的初始密码,这个要记录下不然没法登陆了

报错解决

如果看到类似的报错,表明APT无法验证MySQL仓库的GPG公钥,这通常发生在添加新仓库后没有导入该仓库的GPG公钥时。此外,当您尝试安装mysql-server包时,由于APT无法验证仓库的安全性,所以无法找到安装候选。

Err:2 http://repo.mysql.com/apt/debian bullseye InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B7B3B788A8D3785C

我们添加一下密钥

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys B7B3B788A8D3785C

这个命令从指定的密钥服务器导入公钥,这样APT就可以验证MySQL仓库的签名了。

安装mysql

apt-get update
apt-get install mysql-server

检查下mysql状态

sudo systemctl status mysql

看到状态正常就是安装好啦

修改忽略大小写

MySQL在Windows系统上默认不区分大小写,但是在Linux和Mac系统上是区分大小写的。这是因为MySQL使用操作系统的文件系统来存储表,而Linux和Mac的文件系统是区分大小写的。

如果你的表名或列名包含大写字母,那么在Linux或Mac系统上,你需要在SQL查询中精确地指定表名和列名的大小写。

例如,如果你的表名是MyTable,那么在查询时你也需要指定MyTable,而不是mytableMYTABLE

SELECT * FROM MyTable;

如果你想在Linux或Mac系统上忽略表名和列名的大小写,可以在MySQL配置文件my.cnf(通常位于/etc/mysql/my.cnf/etc/my.cnf)中添加以下配置:

[mysqld]
lower_case_table_names=1

然后重启MySQL服务。

按理说这样修改就可以了,但是发现修改后重启mysql会报错

其实是这里需要重建mysql数据目录,在重建之前记得先把数据导出并备份

停止mysql服务:

sudo service mysql stop;

删除mysql数据目录:

sudo rm -vf /var/lib/mysql;

重新创建mysql数据目录(仅仅删除是不够的):

sudo mkdir /var/lib/mysql sudo chown mysql:mysql /var/lib/mysql sudo chmod 700 /var/lib/mysql

然后确保下配置文件已经修改了lower_case_table_names = 1

重新初始化mysql:

sudo mysqld --defaults-file=/etc/mysql/my.cnf --initialize --lower_case_table_names=1 --user=mysql --console

启动mysql:

sudo service mysql start

检索mysql的root新密码:

sudo grep 'temporary password' /var/log/mysql/error.log

更改root密码:

sudo mysql -u root -p
(输入密码并回车) 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '新密码';

(这里注意mysql8默认的密码管理插件是caching_sha2_password,如果用的别的会报错,把命令参数修改为在使用的插件即可)

退出mysql:

exit;

然后我们重新登陆来验证下:

sudo mysql -u root -p
(输入密码并回车) 

执行:

show variables like 'lower_case_%';

预期产出:

允许公网访问

进入mysql:

mysql -u root -p
(输入密码并回车) 

选择mysql表:

use mysql;

设置允许任意ip访问:

update user set host = '%' where user = 'root'; 

给root授权所有权限和授权选项,允许访问和管理所有数据库和表:

grant all on *.* to 'root'@'%';

刷新权限:

flush privileges;
未经允许不得转载:四四的军火库 » Linux安装Mysql8及改为忽略大小写、允许公网访问