MySQL字符集设置、密码管理

MySQL 数据库字符集设置

        计算机中储存的信息都是用二进制数方式来表示的,读者每天看到屏幕显式的英文、汉字等字符也都是二进制数转换之后的结果。通俗地说,将汉字按照某种字符集编码存储在计算机中,称为“编码”。将存储在计算机中的二进制数解析显示出来,称为“解码”,在解析过程中,如果使用了错误的解码规则,会导致显示乱码。

show variables like '%char%';
set character_set_client=utf8mb4;

        MySQL 在 5.5.3 之后增加了这个 utf8mb4 的编码,mb4 就是 most bytes 4 的意思,专门用来兼容四字节的 unicode。utf8mb4 是 utf8 的超集,除了将编码改为 utf8mb4 外不需要做其他转换。当然,为了节省空间,一般情况下使用 utf8 也就够了。

        扩展 utf8mb4 是因为随着互联网的发展,产生了许多新类型的字符,也就是我们通常在聊天时发的小黄脸表情(四个字节存储,所以,设计数据库时如果想要允许用户使用特殊符号,最好使用 utf8mb4 编码来存储,使得数据库有更好的兼容性,但是这样设计会导致耗费更多的存储空间。

MySQL数据库密码管理

        MySQL 数据库在使用过程中为了加强安全防范,需要设置密码访问,如何设置密码及密码忘记如何破解呢?

        1)MySQL 创建用户及授权

        新版MySQL要求使用IDENTIFIED创建用户和使用GRANT授予权限相互分离。因此可以采用:

创建账户:create user '用户名'@'访问主机' identified by '密码';

赋予权限:grant 权限列表 on 数据库 to '用户名'@'访问主机' ;(修改权限时在后面加with grant option)

create user my_user@localhost identified by 'Mima+12345';
grant all on test.* to my_user@localhost;
grant select on test.* to my_user@localhost with grant option;

#创建 my_user 用户和 Mima+12345 密码
#授权 localhost 主机通过 my_user 用户访问本地的 test 库的所有权限。
#修改 my_user 用户访问 localhost 主机本地的 test 库的权限为查询权限。

         2)MySQL 密码破解方法

        在使用 MySQL 数据库中,偶尔会出现密码忘记或者被其他人员修改掉数据库权限的情况,如果需要紧急修改密码,如何破解 MySQL 密码呢?首先停止 MySQL 数据库服务,以跳过权限方式启动,命令如下:

        2.1 查找 my.cnf 文件

find / -name my.cnf

        中间遇到 find: ‘/run/user/1000/gvfs’: 权限不够 问题。经过查找发现,官方说这是一个bug[bug#615848],原因是FUSE文件系统和权限不配的问题,全局搜索时碰到它就会退出报错。

        其实这个目录是空的,查不查都没关系。所以,以下解决方式比较简粗暴:

umount /run/user/1000/gvfs
rm -rf /run/user/1000/gvfs

         2.2 在 /etc/my.cnf 文件后面添加 skip-grant-tables

         2.3 重启 mysqld 服务

systemctl restart mysqld.service

        2.4 免密登录 MySQL

mysql -uroot

         2.5 由于 MySQL 用户及密码认证信息存放在 MySQL 库中的 user 表,需进入 MySQL 库

use mysql

         2.6 刷新权限(不刷新的话会出现,ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 错误,所以需要刷新权限后再修改密码)

flush privileges;

         2.7 更新密码(MySQL5.7.9之后就没有password函数了)

alter user 'root'@'localhost' identified with mysql_native_password by '新密码';
#密码必须包括大小写字母、数字、特殊符号,8位以上

         2.8 再次刷新权限

flush privileges;

        2.9 退出 MySQL

exit

        2.10 将 /etc/my.cnf 文件后面添加的 skip-grant-tables 删除

         2.11 重启 mysqld 服务

systemctl restart mysqld.service

        2.12 重新登陆 MySQL

mysql -uroot -p'Mima+123456'

         出现 mysql: [Warning] Using a password on the command line interface can be insecure. 警告。是在提示建议不要以其他人可以发现它的方式指定密码。

        改变一下他的登陆方式就好了:

mysql -uroot -p

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值