本文主要记录在 Linux(Ubuntu) 下安装 MySql 数据库的重要配置点:远程访问 及 忽略大小写。特别是忽略大小写的配置是及其重要的,一旦 MySql 初始化并且有了数据库和表之后,修改起来就会很麻烦,所以在刚安装好的时候就要做好配置。
1. 安装 mysql 数据库
更新 apt 管理的资源包:
sudo apt update
更新 apt 资源包是为了安装操作系统可用的最新版本的 mysql 。
更新完毕后,安装 mysql:
sudo apt install mysql-server
安装完成后,mysql 服务会自动启动。
验证 mysql 正在运行,输入:
sudo systemctl status mysql
2. 配置 mysql 忽略大小写
**\忽略大小写是十分必要的,并且应该在没有任何库和表之前**
停止 mysql 服务:
sudo systemctl stop mysql
打开在 /etc/mysql/mysql.conf.d/mysqld.cnf 文件:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在 /etc/mysql/mysql.conf.d/mysqld.cnf 文件的 [mysqld] 后添加:
lower_case_table_names=1
删除并重新创建 /var/lib/mysql 目录:
sudo rm -rf /var/lib/mysql
sudo mkdir /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql
sudo chmod 700 /var/lib/mysql
重新初始化 mysql :
sudo mysqld --defaults-file=/etc/mysql/my.cnf --initialize --lower_case_table_names=1 --user=mysql --console
启动 mysql 服务:
sudo systemctl start mysql
重新初始化后,会给 root 用户生成临时密码。
检索mysql root用户新生成的临时密码:
sudo grep 'temporary password' /var/log/mysql/error.log
输出参考(最后的'qj&wiF-yq4in'就是临时密码):
2021-09-04T02:24:28.833136Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qj&wiF-yq4in
用临时密码登录 mysql 并修改 root 用户的密码:
sudo mysql -u root -p
alter user 'root'@'localhost' identified with mysql_native_password by '密码';
验证 lower_case_table_names 配置:
show variables like 'lower_case%'
退出mysql
exit
3. 配置 mysql 的远程访问
3.1. 编辑配置文件
打开在 /etc/mysql/mysql.conf.d/mysqld.cnf 文件:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address 一行,默认该值为 127.0.0.1,仅监听本地连接。 将 bind-address 改为 0.0.0.0 允许所有 IP 地址访问,也可以是某个固定 IP,仅允许该固定 IP 连接。 如果没有找到 bind-address 的配置行的话自行新增即可。 编辑完成后保存并退出。
3.2. 重启 mysql 服务(使新配置生效):
sudo systemctl restart mysql
3.3. 登录 mysql 添加远程管理用户
登录
mysql -uroot -p
输入密码登录后创建一个新用户('%'表示允许远程登录):
create user '用户名'@'%' identified with mysql_native_password by '用户密码';
查询用户:
select user,host from mysql.user;
赋予该用户拥有所有数据库的访问权限:
grant all privileges on *.* to '用户名'@'%' with grant option;
刷新 mysql 系统权限,然后退出 mysql。
FLUSH PRIVILEGES;
EXIT;
如果防火墙是启用的状态的话,记得要开放 mysql 的通信端口 3306 。
这个时候就可以测试远程连接了。