1.卸载

  • 停止服务
sudo service mysql stop
  • 删除mysql服务
sudo apt-get remove mysql-server
  • 删除其他组件
sudo apt-get autoremove
  • 删除残留配置文件
sudo dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

过程中会弹出页面询问是否删除数据,全选yes

2.下载安装

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

默认下载到~/Downloads/路径下

sudo dpkg -i ~/Downloads/mysql-apt-config_0.8.11-1_all.deb

更新仓库

sudo apt-get update

安装mysql服务

sudo apt-get install mysql-server

选好ok回车

输入两次root密码

第一个官方推荐的,回车

查看服务是否启动

ps -ef | grep mysql

启动了

mysql    29734     1  0 11:34 ?        00:00:10 /usr/sbin/mysqld

如果没有启动,启动服务

sudo service mysql restart

3.表名查询忽略大小写

如果使用默认安装路径,mysqldump命令直接使用。手动设置了安装目录,进入目录,终端 bin/mysqldump 代替 mysqldump

将初始库mysql导出到桌面,保存为mysqldump.sql文件,弹出提示时输入前面填写的root密码

mysqldump  -h localhost -u root -p mysql > ~/Desktop/mysqldump.sql

停止服务

sudo service mysql stop

将mysql的数据文件移动到临时目录下

这个动作相当于将所有数据库清空,有重要数据记得备份

sudo mv /var/lib/mysql /tmp/mysql

创建同名文件夹

sudo mkdir /var/lib/mysql

设置该目录及其子目录的群组(不用担心系统上无此用户)

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

设置群组读写权限

sudo chmod 750 /var/lib/mysql

编辑配置文件

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

[mysqld]下添加lower_case_table_names=1

[mysqld]
lower_case_table_names=1
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log

然后手动初始化MySQL。

defaults-file默认安装路径为/etc/mysql/my.cnf,手动安装需要更改。

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

再次查看/var/lib/mysql目录权限

ll -d /var/lib/mysql

没问题

drwxr-x--- 5 mysql mysql 4096 12月 25 13:11 /var/lib/mysql/

如果群组和权限不一致再次执行

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

重新开启服务

sudo service mysql restart

登陆mysql,密码处直接回车

mysql -u root -p

登陆后查询

SHOW VARIABLES where Variable_name like 'lower%';

lower_case_table_names=1,没问题

mysql> SHOW VARIABLES where Variable_name like 'lower%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+
2 rows in set (0.01 sec)

查看数据库,少了sys

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.01 sec)

切换到mysql

use mysql;

导入前面导出的mysql

mysql> source ~/Desktop/mysqldump.sql
Query OK, 0 rows affected (0.00 sec)
.....
.....

退出

mysql> exit;
Bye

执行mysql_upgrade命令创建sys

sudo mysql_upgrade

登陆mysql测试,root密码是安装时设置的密码

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| haha |
+----------------+
1 row in set (0.00 sec)

都没报错,完成

mysql> select * from haha;
Empty set (0.00 sec) mysql> select * from HAha;
Empty set (0.00 sec)

说明

MySQL8.0的lower_case_table_names只有在服务初始化时才能配置,服务初始化后,更改lower_case_table_names设置,重启服务会报错。

这里将数据移除,采用手动初始化的方式再次初始服务,避免错误产生。

主要参照这个回答:https://stackoverflow.com/questions/53103588/lower-case-table-names-1-on-ubuntu-18-04-doesnt-let-mysql-to-start/53175727#53175727

手动初始化参数的官方说明:https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization-mysqld.html (windows的配置可以参考这里)

4.允许远程访问

登陆MySQL,执行下面语句

UPDATE mysql.user SET Host = '%' WHERE (Host = 'localhost') and (User = 'root');
mysql> UPDATE mysql.user SET Host = '%' WHERE (Host = 'localhost') and (User = 'root');
Query OK, 1 row affected (0.15 sec)
Rows matched: 1 Changed: 1 Warnings: 0

然后刷新一下

flush privileges;

在其他电脑上尝试连接

mysql -h 192.168.0.148 -P 3306 -u root -p

还是不行重启下mysql服务

说明

以前版本的配置文件上需要注释bind-address = 127.0.0.1,但8.0版本已经没有这个键值对,所以配置文件无需修改

远程一直不能连接,尝试ping下地址,ifconfig查看ip地址是否正确

可以参考这篇文章进行调试:https://blog.csdn.net/chengyuqiang/article/details/54285857

5.中文编码

MySQL8.0似乎不需要修改,登陆数据库查看

mysql> show variables like '%char%';
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.03 sec)

mb4就是most bytes 4的意思,专门用来兼容四字节的unicode,utf8mb4是utf8的超集

6.数据库导出报错

本地8.0版本,使用mysqldump命令导出远程数据库失败

mysqldump -h IP地址 -P 端口号 -u root -p  数据库名称 >文件名.sql
$ mysqldump -h xxx.xxx.x.xxx -P xxx -u xxx -p  xxx >xxx.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysqldump: Couldn't execute 'SELECT COLUMN_NAME,
JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"')
FROM information_schema.COLUMN_STATISTICS
WHERE SCHEMA_NAME = 'topbaby_dev' AND TABLE_NAME = 'balanceofaccount';'
: Unknown table 'column_statistics' in information_schema (1109)

新版的mysqldump默认启用了一个新标志,通过--column-statistics=0来禁用

$ mysqldump --column-statistics=0 -h xxx.xxx.x.xxx -P xxx -u xxx -p  xxx >xxx.sql

完成。

(未测)修改配置文件

[mysqldump]下插入column-statistics=0

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
column-statistics=0
lower_case_table_names=1
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log

但是重启服务会报错,可能也是需要在初始化前配置,这个就没有测试了。

参考问题:https://serverfault.com/questions/912162/mysqldump-throws-unknown-table-column-statistics-in-information-schema-1109

后续踩到坑再补充...

Ubuntu18.04-MySQL8.0-表名大小写敏感-远程连接的更多相关文章

  1. Mysql8.0 3306端口无法远程连接

    在阿里云上搭建MySql8.0数据库服务,在阿里云上可以成功连接登陆使用,但用自己的电脑远程连接时却无法成功连接 经过资料查找,找出原因如下: 1.首先通过查看MySQL的的用户信息 可以看到host ...

  2. VMware workstation16 中Centos7下MySQL8.0安装过程+Navicat远程连接

    1.MySQL yum源安装 2.安装后,首次登录mysql以及密码配置3.远程登录问题(Navicat15为例) 一.CentOS7+MySQL8.0,yum源安装1.安装mysql前应卸载原有my ...

  3. ubuntu18.04中mysql的安装及远程连接配置

    1.ubuntu 18.04 下mysql的安装 sudo apt install mysql-server 2.mysql 安装配置 sudo mysql_secure_installation 参 ...

  4. Azure Ubuntu18.04安装lxde桌面记录,Windows远程连接Ubuntu18.04(Linux)

    执行如下命令: 尽量按以下顺序执行,否则可能会发生意向不到的问题(坑) 1.更新数据源 sudo apt-get update 2.更新安装包 sudo apt-get upgrade 3.安装lxd ...

  5. 【转】MySQL表名大小写敏感导致的问题

    原文地址:https://blog.csdn.net/postnull/article/details/72455768 最近在项目中遇到一个比较奇怪的小问题.在开发过程中自己测试没有问题,但是提测后 ...

  6. MySQL表名大小写敏感导致的问题

      最近在项目中遇到一个比较奇怪的小问题.在开发过程中自己测试没有问题,但是提测后,测试的同时在测试一个功能时报错了,日志是: Caused by: com.mysql.jdbc.exceptions ...

  7. ubuntu18.04+ cuda9.0+opencv3.1+caffe-ssd安装

    详细Ubuntu18.04,CUDA9.0,OpenCV3.1,Tensorflow完全配置指南 问题1:使用Cmake编译opencv源码 CMake Error: The following va ...

  8. Ubuntu18.04+CUDA9.0+cuDNN7.1.3+openface安装总结

    目录 前言 编译工具CMake C++标准库安装 下载OpenFace代码 OpenCV安装 luarocks-Lua 包管理器,提供一个命令行的方式来管理 Lua 包依赖.安装第三方 Lua 包等功 ...

  9. Mysql 表名忽略大小写-连接字符集随笔记录

    1.参数说明: lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的 lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候 ...

随机推荐

  1. 松软科技课堂:JavaScriptDOM - 改变 CSS

    HTML DOM 允许 JavaScript 更改 HTML 元素的样式. 改变 HTML 样式 如需更改 HTML 元素的样式,请使用此语法: document.getElementById(id) ...

  2. 萌新深度学习与Pytorch入门记录(一):Win10下环境安装

    深度学习从入门到入土,安装软件及配置环境踩了不少坑,过程中参考了多处博主给的解决方法,遂整合一下自己的采坑记录. (若遇到不一样的错误,请参考其他博主答案解决) 笔者电脑系统为win10系统,在此环境 ...

  3. 吴裕雄--天生自然神经网络与深度学习实战Python+Keras+TensorFlow:Bellman函数、贪心算法与增强性学习网络开发实践

    !pip install gym import random import numpy as np import matplotlib.pyplot as plt from keras.layers ...

  4. JAVA常量池、栈、堆的比较(转载)

    今天在学JAVA的数据存储位置的时候,看到了一篇博文感觉不错,特此转载: http://www.cnblogs.com/Eason-S/p/5658230.html JAVA中,有六个不同的地方可以存 ...

  5. Codeforces Round #620 (Div. 2) E

    LCA的倍增 模板: ], depth[maxn]; int dist[maxn],head[maxn]; void add(int u,int v,int dist0){ a[tot].next=h ...

  6. BZOJ5319/LOJ2551「JSOI2018」列队

    问题描述 作为一名大学生,九条可怜在去年参加了她人生中的最后一次军训. 军训中的一个重要项目是练习列队,为了训练学生,教官给每一个学生分配了一个休息位置.每次训练开始前,所有学生都在各自的休息位置休息 ...

  7. hadoop学习笔记(一):NameNade持久化和DataNode概念

    其中的fsimage 称为时点备份,又叫磁盘镜像快照,这个是NameNode的一个 持久化的方式之一:缺点,在内存数据序列化的时候比较慢 具体的过程:因为我们所知道的NameNode一般是存储在内存中 ...

  8. MySQL忘记密码(终极解决方法,亲测有效,windows版本)

    1.进入mysql的bin目录 2.net stop mysql 3.mysqld --skip-grant-tables 输入 mysqld --skip-grant-tables 回车. (--s ...

  9. jQuery之绑定焦点事件(焦点事件失效)

    在使用jQuery绑定事件时,若某个事件不存在,则该事件后 绑定的事件均失效: 如图所示,若失去焦点事件checkEmail不存在, 会导致后面的事件checkMobile,和事件checkBirth ...

  10. (Java多线程系列九)线程池

    线程池 1.什么是线程池 线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程.线程池中线程的数量通常取决于可用内存数量和应用程序的需求. ...