当前位置:   article > 正文

Ubuntu18 安装MySQL8 并设置忽略表名大小写_ubuntu18安装mysql8

ubuntu18安装mysql8

Ubuntu18.04版本,这个版本的软件商店内置的MySQL是5.7版本,我们需要额外的步骤才可以安装8.0版本的MySQL

安装操作需root权限,你可以:

  1. 通过 sudo su -,切换到root用户

  2. 或在每一个命令前,加上sudo,用来临时提升权限

安装

1. 下载apt仓库文件

# 下载apt仓库的安装包,Ubuntu的安装包是.deb文件

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

 2. 配置apt仓库

# 使用dpkg命令安装仓库

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

弹出框中选择:ubuntu bionic (Ubuntu18.04系统的代号是bionic,选择18.04的版本库用来安装)

 弹出框中选择:MySQL Server & Cluster

弹出框中选择:mysql-8.0 

 最后选择:ok


3. 更新apt仓库的信息

 # 首先导入仓库的密钥信息

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29

# 更新仓库信息

apt update
 

 4. 检查是否成功配置MySQL8.0的仓库

apt-cache policy mysql-server

看到如图所示字样,即成功

5. 安装MySQL8.0

# 使用apt安装mysql客户端和mysql服务端

apt install -f -y mysql-client=8.0* mysql-community-server=8.0*

弹出框中输入root密码并选择ok,密码任意


再次输入root密码确认

 6. 查看是否启动成功

 ps -ef | grep mysql

或者

systemctl status mysql

如下图启动成功 

 

设置root登录密码

执行命令:

mysql -uroot

选择数据库:

use mysql;

修改密码:

alter user 'root'@'localhost' identified by 'root';

刷新权限表:

flush privileges;

退出:

exit;

允许远程连接

登录:

mysql -uroot -p

回车输入密码
选择数据库:

use mysql

修改host运行远程登录:

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

刷新权限:

flush privileges;

退出:

exit;

如果服务器防火墙放通了端口还是不能通过公网Ip连接
1.修改配置文件:

vim /etc/mysql/mysql.conf.d/mysqld.cnf

将bind-address = 127.0.0.1注释掉(即在行首加#)
2.重启服务

service mysql restart 

设置忽略表名大小写

查看状态
通过 show variables 命令查看当前 mysql 是否是区分大小写,如下:

  1. mysql> show variables like '%case_table%';
  2. +------------------------+-------+
  3. | Variable_name | Value |
  4. +------------------------+-------+
  5. | lower_case_table_names | 0 |
  6. +------------------------+-------+
  7. 1 row in set (0.00 sec)

注意:

lower_case_table_names=1 表示 mysql 是不区分大小写的

lower_case_table_names=0 表示 mysql 是区分大小写的

修改配置
MySQL 8.0 以上版本,大小写敏感配置比较坑,根据官方文档可以发现如下信息:

lower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is prohibited.
lower_case_table_names 只能在初始化服务器时配置。 禁止在服务器初始化后更改 lower_case_table_names 设置。

上面这段话的大概意思是说:lower_case_table_names 配置必须在安装好 MySQL 后,初始化 mysql 配置时才有效。一旦 mysql 启动后,再设置是无效的,而且启动报错。

注意:先将数据库下所有数据保存备份,如果你不在意数据的话直接删除数据

停止服务
在修改配置之前,请先把 mysql 服务停止。执行下面命令:

sudo systemctl stop mysql.service

删除错误日志
为了方便查看 mysql 的错误日志,可以先将 /var/log/mysqld.log 删除。命令如下:

sudo rm /var/log/mysqld.log

删除系统数据库与用户数据库
将 mysql 数据库中的系统数据库和用户数据库都删除掉,执行下面命令:

sudo rm -rf /var/lib/mysql

创建数据库目录
上面将已存在的数据库目录 /var/lib/mysql 删除,下面将手动创建一个空目录且进行授权。命令如下:

(1)手动创建一个 mysql 目录,即上面刚刚删除的 mysql 目录

 sudo mkdir /var/lib/mysql

(2)为 /var/lib/mysql 目录授权,设置目录的所属用户和所属组

sudo chown -R mysql:mysql /var/lib/mysql

(3)查看目录详细信息,授权成功

 ll | grep mysql

配置 lower_case_table_names
使用 vim 编辑器编辑 /etc/mysql/mysql.conf.d/mysqld.cnf 文件,如下:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在文件中的最后一行添加 lower_case_table_names 配置,配置如下:

  1. [mysqld]
  2. pid-file = /var/run/mysqld/mysqld.pid
  3. socket = /var/run/mysqld/mysqld.sock
  4. datadir = /var/lib/mysql
  5. log-error = /var/log/mysql/error.log
  6. # 刚刚添加的配置
  7. lower_case_table_names = 1

保存配置信息。

初始化 MySql
执行如下命令初始化 mysql 数据库:

sudo mysqld --defaults-file=/etc/mysql/my.cnf --initialize  --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysql

启动 MySql 服务

sudo systemctl start mysql.service

登录 MySql
由于上面执行了 MySql 初始化操作,曾经的密码已经不能用了。MySQL 将在初始化过程中创建临时密码,临时密码存储在 /var/log/mysql/error.log 中。

(1)使用 cat 和 grep 命令配合查找,命令如下:

sudo cat  /var/log/mysql/error.log  | grep password

然后会输出这样一条记录

  1. 2023-02-04T16:22:06.353690Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 8SEiqslneT&t

注意:上面的 8SEiqslneT&t 就是临时密码

(2)使用临时密码登录 MySql

mysql -u root -p

然后输入临时密码回车
(3)修改用户密码,将密码修改为a123456

alter user 'root'@'localhost' identified with mysql_native_password by 'a123456';

注意:其中 MYSQL_NATIVE_PASSWORD 是由于客户端连接 MySQL 时提示 “plugin caching_sha2_password” 错误,把 plugin 换成MYSQL_NATIVE_PASSWORD 后就没问题。

(4)确认配置是否生效

show variables like '%lower_case%';

输出如下结果则生效

  1. +------------------------+-------+
  2. | Variable_name | Value |
  3. +------------------------+-------+
  4. | lower_case_file_system | OFF |
  5. | lower_case_table_names | 1 |
  6. +------------------------+-------+
  7. 2 rows in set (0.01 sec)

刷新权限表:

flush privileges;

退出:

exit;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/65179
推荐阅读
相关标签
  

闽ICP备14008679号