Ubuntu 20.04 安装MySQL 8,修改数据库名和表名默认区分大小写

1. 安装MySQL

# 第一步:更新源
$ sudo apt-get update
# 第二步:安装MySQL服务
$ sudo apt-get install mysql-server
# 第三步:检查安装版本(2021.8.5默认安装版本)
$ mysql --version

mysql Ver 8.0.26-0ubuntu0.20.04.2 for Linux on x86_64((Ubuntu))

# 第四步:检查MySQL运行状态
$ systemctl status mysql

运行状态

2. 存在问题

MySQL数据库名和表名默认是区分大小写的,官方文档建议在初始化数据库是设置lower_case_table_names=1,并且修改/etc/mysql/mysql.conf.d/mysqld.cnf文件也添加lower_case_table_names=1,但是修改完之后服务起不来了。在网上找了很多教程,有删除/var/lib/mysql目录再修改/etc/mysql/mysql.conf.d/mysqld.cnf,但是最后都失败了。同样的都是服务不能起来。很郁闷!!!!强迫症表示必须解决这个问题,于是疯狂找解决方案。

于是找到了以下解决方案,使用于初次安装时使用,若使用后再需要修改,请先进行数据备份。

# 第一步:停止MySQL服务
$ systemctl stop mysql
# 第二步:备份配置文件
$ sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.backup
# 第三步:停止服务
$ sudo service mysql stop
# 第四步:卸载刚安装的MySQL
$ sudo apt-get --purge autoremove mysql-server
# 第五步:删除目录/var/lib/mysql
$ sudo rm -rf /var/lib/mysql
# 第六步:还原配置文件
$ sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf.backup /etc/mysql/mysql.conf.d/mysqld.cnf
# 第七步:编辑配置文件
# 在[mysqld]下添加lower_case_table_names=1
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 第八步:重新安装MySQL
$ sudo apt-get install mysql-server
# 安装过程中提示
# 配置文件 '/etc/mysql/mysql.conf.d/mysqld.cnf'
# ==> 系统中的这个文件或者是由您创建的,或者是由脚本建立的。
# ==> 软件包维护者所提供的软件包中也包含了该文件。
#   您现在希望如何处理呢? 您有以下几个选择:
#    Y 或 I  :安装软件包维护者所提供的版本
#    N 或 O  :保留您原来安装的版本
#      D     :显示两者的区别
#      Z     :把当前进程切换到后台,然后查看现在的具体情况
# 默认的处理方法是保留您当前使用的版本。
# *** mysqld.cnf (Y/I/N/O/D/Z) [默认选项=N] ?

# 选择N,使用自定义的文件版本
# 第九步:重启服务
$ systemctl start mysql
# 查看服务状态
$ systemctl status mysql

相信各位看到这里就已经明白了,就是需要安装时提前准备好配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,若提前准备,应该可以不用重复安装两次。
本人没有尝试

3. 初始化配置

执行命令

$ sudo mysql_secure_installation

以下过程就不上截图了,此版本步骤依次是(我的设置):

  1. 是否对密码进行强校验?选择N,不会
  2. 填写root用户密码
  3. 是否移除匿名用户?选择Y,移除
  4. 是否允许root用户进行远程连接?选择Y,允许
  5. 是否删除test数据库?选择N,不删除
  6. 是否设置权限立即生效?选择Y,立即生效

4. 本地尝试登录

$ sudo mysql -u root -p  # 输入root用户密码

检查修改的默认区分大小写的配置是否修改成功

mysql> SHOW VARIABLES LIKE 'lower_case_%';

在这里插入图片描述
已生效!!!!!!!!!!!!!!!!

5. 配置远程访问

在Ubuntu下MySQL缺省是只允许本地访问的,使用workbench连接工具是连不上的;

$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf  

#找到 bind-address 修改值为 0.0.0.0(如果需要远程访问)

# 重启mysql
$ systemctl restart mysql

修改MySQL数据库root用户的访问限制

$ sudo mysql -u root -p    # 输入root用户密码

mysql> use mysql;
# 修改root用户的访问限制
mysql> update user set host='%' where user='root';
mysql> flush privileges;

正常情况下此时就应该可以远程访问了,但是偏偏就不让我开心一会 -_-|||
查看防火墙是否正常,一般情况下,关闭防火墙即可。

# 查看防火墙状态
$ sudo ufw status
# 关闭防火墙
$ sudo ufw disable
# 开启防火墙
$ sudo ufw enable

MySQL 8 中用户密码加密方式变化导致远程连接失败。

mysql> alter user 'root'@'%' identified by '123456' password expire never;
mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
mysql> flush privileges;

此时,我终于可以正常进行数据库远程操作了!
心累。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值