Debian12安装MySQL
前言
因为最近在做项目,需要测试一下线上环境,所以要使用到MySQL数据库,我尽量和本地数据库版本保持一致,下载的也会是8.0版本。
我的设备是阿里云2核4G的云服务器,系统是DD之后的Debian12,远程连接工具是FinalShell,安装完成后记得配置一下阿里云的安全组,打开3306端口。
配置 MySQL 存储库
访问Debian最新的配置源,复制到下面的配置中。
目前最新的是mysql-apt-config_0.8.30-1_all.deb
要将 MySQL APT 存储库添加到系统,请转到存储库下载页面并使用以下 wget 命令下载最新的发行包:
1 | sudo apt update |
下载完成后,以具有 sudo 权限的用户身份安装发行包:
1 | sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb |
提示需要安装gnupg。
1 | sudo apt-get install gnupg |
安装后继续执行:
我们点进去,发现可以选择8.0版本
然后选择OK
安装 MySQL
通过运行以下命令更新包列表并安装 MySQL 服务器包:
1 | sudo apt install mysql-server |
直接报错,没找到这个包。
经过搜索之后,发现需要更新软件包(我只是开始更新了一次)。
1 | sudo apt update |
吐槽一下,带宽太低了,安装了好长时间。。。
接下来就是设置密码:
按Tab或者小键盘右键(End)可以选中OK,然后密码留空
然后直接Tab,选择OK
接着选择使用强密码加密
安装完成后, MySQL 服务将自动启动,您可以通过键入以下内容来验证它:
1 | sudo systemctl status mysql |
保护 MySQL
运行该 mysql_secure_installation 命令设置 root 密码并提高 MySQL 安装的安全性:
1 | sudo mysql_secure_installation |
询问是否要启用密码验证组件。如果你想启用这个组件,可以按下 y
或 Y
。如果不想启用,可以按下任意其他键。
这里我直接回车。
这里我输入了密码,但是报错了。
提示SET PASSWORD对用户“root”@’localhost“没有意义,因为使用的身份验证方法不会将身份验证数据存储在MySQL服务器中。如果要更改身份验证参数,请考虑改用 ALTER USER。
设置密码
上面的界面可以直接关闭了,打开一个新的终端界面
1 | sudo mysql |
1 | '%' - 所有情况都能访问 |
接下来修改密码
1 | ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '123456'; |
输入exit返回终端后,再运行mysql_secure_installation。
1 | root@iZf8z2vb82x33szfaz267uZ:~# sudo mysql_secure_installation |
修改密码
修改用户密码,记得先登录mysql的root用户。
1 | alter user '用户名'@'%' identified by '密码'; |
操作 MySQL
登录
1 | mysql -uroot -p |
创建新用户
1 | #默认 |
先使用mysql -uroot -p进行登录
1 | create user 'lcf'@'%' identified with mysql_native_password by '123456'; |
我们可以看到lcf和lyy的密码插件不同。
授权
1 | grant all privileges on database_name.* to 'username'@'%'; |
这个命令的效果是将对指定数据库的所有权限授予给特定用户,使该用户能够从任何主机连接并对数据库进行操作。
删除用户
1 | delete from mysql.user where user='用户名'; |
配置 MySQL
大小写不敏感
前言
配置这个属性很重要,我这里只介绍安装后再修改配置的方法,在安装后再修改配置(会删除原有的数据和设置),所以需要谨慎使用。
在 MySQL 8 中,数据目录初始化之后,不再允许更改lower_case_table_names = 1的值;
MySQL 基于某些原因,禁止在重新启动 MySQL 服务时将 lower_case_table_names
设置 成不同于初始化 MySQL 服务时设置的 lower_case_table_names 值。
也就是说启动(重启)MySQL 时,lower_case_table_names
的值必须与初始化 MySQL 时(安装 MySQL 后的首次启动)的值相同。
查看现有配置
1 | show global variables like '%case%'; |
- lower_case_file_system:表示当前系统文件是否大小写敏感(ON为不敏感,OFF为敏感),只读参数,无法修改。
- lower_case_table_names:表示表名是否大小写敏感,可以修改。
- lower_case_table_names = 0时,mysql会根据表名直接操作,大小写敏感。
- lower_case_table_names = 1时,mysql会先把表名转为小写,再执行操作。
具体实现
1.停止MySQL
2.删除数据目录,即删除 /var/lib/mysql 目录、
3.在MySQL配置文件( /etc/mysql/mysql.conf.d/mysqld.cnf )中添加 lower_case_table_names=1
4.启动 MySQL(这个时候没有密码了)
1 | sudo service mysql stop |
然后再查看一下配置
1 | show global variables like '%case%'; |
重新配置
数据库表已经不区分大小写了,接着再配置一下密码,用户即可。
1 | # 连接 |
输入alter user ‘root‘@’localhost’ identified with mysql_native_password by ‘123456’;
出现了报错,原因是我的user为root,而我的host为%,改localhost为%即可。
参考
Debian直接安装mysql8_debian安装mysql8-CSDN博客
mysql 8改为不区分大小写的2种方法 - 知乎 (zhihu.com)
Debian12安装MySQL8、创建新用户、授权实践及问题解决方案_debian12 安装mysql-CSDN博客
MySQL报错:ERROR 1396 (HY000): Operation ALTER USER failed for root@localhost-CSDN博客