mysql 大小写 ubuntu_Ubuntu18.04-MySQL8.0-表名大小写敏感-远程连接

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.下载安装

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回车

d802723544640d7b48fd44e4bdb3fd54.png

输入两次root密码

597e2d460d2315fc9c812be484da3439.png

第一个官方推荐的,回车

dfc866732afdd0a19d5666621e7c091d.png

查看服务是否启动

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设置,重启服务会报错。 这里将数据移除,采用手动初始化的方式再次初始服务,避免错误产生。

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地址是否正确

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

后续踩到坑再补充...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值