用户管理与字符集

一、用户管理

用户名的概念

用户名是由两部分组成的

user和host

1.1 创建用户

create user 'yysue'@'192.168.5.38' identified by 'yysueyysue';
create user 'yysue'@'srv%.yysue.net' identified by 'yysueyysue';
flush privileges; 结合/etc/hosts使用,对域名授权
srv1.yysue.net 192.168.5.11
srv2.yysue.net 192.168.5.12 saltstack,ansible

查看系统账号

select user, host, password from mysql.user;
select user, host, authentication_string from mysql.user;

查看账号的权限

show grants for user@host

数据库加固命令,只在初始化数据库时执行一次

delete from mysql.user where user!='root' or host!='localhost';
truncate table mysql.db;
drop database test;

root@localhost与root@127.0.0.1区别

localhost只能通过unix_domain登录,socket

127.0.0.1只能通过tcp方式登录
mysql -h 127.0.0.1 -uroot --protocol=tcp

用户迁移时,密码怎么迁移

-- 验证用户密码
select password('yysueyysue'); create user 'a'@'ip' identified by password '加密后的hash串'; 1.查看用户有什么权限
2.查一下hash串

删除账号

drop user aaa;
drop user aa1@'ip';

用什么工具连接mysql

mysql命令

SQLyog

workbench

查看当前用户

select user();

备一个mysql手册

https://dev.mysql.com/doc/refman/5.6/en/

chm手册

help create user

1.2 授权

移除权限

revoke select on db1.* from yysue@'ip';

授权

grant select on db1.* to 'yysue'@'ip';
grant select on db1.t1 to 'yysue'@'ip';
grant select,update,insert,delete on db1.t1 to 'yysue'@'ip';
flush privileges; 精确匹配原则

查询权限

show grants for root@ip;

回收权限

新建用户精确匹配,使用精确匹配的账户测试

1.3 一个账号连接不上mysql

连接的mysql是否运行,ip地址正确

端口正确

ss替代netstat命令,netstat统计的信息不准确

是否能ping通服务器

账号密码是否正确

是否flush privileges

1.4 应该创建哪些账号

1)读写账号

grant select,update,delete,insert on db1.* to yysue@ip;

2)管理账号

grant all privileges on *.* to root@localhost with grant option;

3)复制用的账号

grant relication slave on *.* to user1@ip identified by 'password';

replication slave > replication client

replication client可以认为用来监控复制的

1.5 注意问题

1)用户名的长度 小于16个字符

2)密码 复杂,可见字符

1.6 MySQL密码忘了

重启数据库

my.cnf [mysqld] 加 skip-grant-tables

不重启数据库

set password for user1@ip = password('password')
help set password update mysql.user set password=password('new-password')
where user = '' and host = '';
flush privileges; mysql.user存储引擎是MyISAM
show create table mysql.user;
复制出去改好密码再复制回来
cp user.* ../user1/
update user1.user set password=password('new-password')
where user='xxx' and host = 'xxx'
cp user.* dst/mysql
chown mysql:mysql
kill -l
重新加载配置
kill -HUP `pidof mysqld`

keypass来帮助记密码

二、字符集

不涉及中文的话,感觉不出来

一般在系统升级,数据迁移时容易出问题

2.1 理解字符集

1)什么是字符集

gbk,utf8,gb2312,latin1

一套符号编码规则

-字符串都必须有相应的字符集

二进制没有字符集

流式传输

校验字符集的概念,以字为单位进行比较

没有检验字符集的概念之前,以字节为单位进行比较

多字节,latin1是单字节,gbk是2字节,utf8是3字节

归类的方法,就是3类

以二进制形式存储,区分大小写, xxx_bin

show charset;

default collation都是以xxx_general_ci结尾

ci是case insensitive的意思,不区分大小写,是指比较的时候不区分大小写

还有一种是xxx_general_cs结尾

cs是case sensitive的意思,区分大小写的

2)好几层字符集

操作系统字符集

echo $LANG
locale -a
i18n
/etc/sysconfig/i18n
updatedb
locate i18n

数据库服务器和数据库MySQL字符集

client 终端字符集
database 数据库字符集
server 服务器的字符集

查看表字符集

查看列字符集

三码同一,服务器,终端,DB级别

db server ->dbname->table->column

物理属性的字符集

连接字符集

结果字符集

3)修改字符集

# 更改客户端字符集
set names utf8;
set global names utf8;

查看

show variables like '%char%';
show global variables like '%char%';

带global全局,不带global是session级别

4)5.5及之前

早期版本的MySQL默认字符集都是latin1

配置文件配置字符集

[mysqld]
character-set-server = utf8

5)常见字符集

gbk/gb2312双字节字符集

gb2312包含于gbk

gbk是gb18030的子集

gbk中日韩

utf8三字节的字符集,万国码,可变长度

ascii 8bit,实际占用7bit

latin1是8bit

2.2 不同字符集进行转换

gbk->unicode->utf8

utf8->unicode->gbk

iconv命令

file 命令

latin1字符集环境:LANG=en_US.ISO_8859_1, CRT:default
gbk字符集环境:LANG=en_US.GBK/zh_CN.GBK, CRT:default
utf8字符集环境:LANG=en_US.UTF-8, CRT:utf-8
mysqldump --where 1=1 limit 10000
screen
time mysql < xxx.sql && mutt xxx

2.3 怎么避免乱码

1)三码统一

服务器端,终端的,DB级的,程序级的

2)真的遇到乱码

想想 我们做过什么

环境发生了什么变换

2.3 gbk&utf8

使用gbk可以省空间,省网络流量

输入为主的网站大多数用utf8,utf8mb4

信息类,新闻站一般用gbk,gb2312

nginx,apache一定要开压缩

压测工具httpwatch

http://wubx.net/mysql-running-change-owner/

三、实验

3.1 验证char能存储多少个字符

drop table if exists t1;
create table t1(name char(30)) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into t1(name) values (repeat('汉', 10));
insert into t1(name) values (repeat('汉', 20));
insert into t1(name) values (repeat('汉', 30));
insert into t1(name) values (repeat('汉', 31));

MySQL用户管理与字符集的更多相关文章

  1. MySQL用户管理及SQL语句详解

    1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysql.user; +--------+--- ...

  2. 【转】MySQL用户管理及SQL语句详解

    [转]MySQL用户管理及SQL语句详解 1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysq ...

  3. MySQL(十六)之MySQL用户管理

    一.MySQL用户管理概述 MySQL是一个多用户的数据库,MYSQL的用户可以分为两大类: 超级管理员用户(root),拥有全部权限 普通用户,由root创建,普通用户只拥有root所分配的权限 二 ...

  4. 库增删该查,表增删该查,记录增删该查,表与表关系(多对多,多对一,一对一),mysql用户管理

    库增删该查 增加库 create database db1 create database db1 charset="gbk 查看库 show databases 查看所有库 show cr ...

  5. MySQL用户管理、常用sql语句、MySQL数据库备份恢复

    1.MySQL用户管理 给远程登陆用户授权:grant all on *.* to 'user1'@'127.0.0.1' identified by '123456' (这里的127.0.0.1是指 ...

  6. MySQL 用户管理与权限管理

    MySQL 用户管理与权限管理 -- 操作环境mysql> show variables like 'version';  +---------------+--------+| Variabl ...

  7. Python 42 mysql用户管理 、pymysql模块

    一:mysql用户管理 什么是mysql用户管理 mysql是一个tcp服务器,应用于操作服务器上的文件数据,接收用户端发送的指令,接收指令时需要考虑到安全问题, ATM购物车中的用户认证和mysql ...

  8. Mysql用户管理及权限分配

    早上到公司,在服务器上Mysql的数据库里新建了个database,然后本地的系统里用原来连接Mysql账号admin连这个数据库.结果报错了,大概是这样子的: Access denied for u ...

  9. MySQL用户管理及权限设置

    mysql 用户管理和权限设置 用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql ...

随机推荐

  1. Apollo模块文章

    Apollo规划模块 自动驾驶公开课 | Apollo 2.5自动驾驶规划控制 : 这篇资料比较早,但是把EM Planner和Lattice Planner这两种在资料上经常看到的算法的来历和大概原 ...

  2. python学习笔记(四)——面向对象编程

    python 支持面向过程编程和面向对象编程. 传统面向过程编程,也叫函数式编程,通过我们的需求设计成一个一个的函数来完成,对一些小规模程序来说面向过程确实简单方便不少.而随着互联网的发展,对于一些大 ...

  3. 9_状态观测器设计_Linear Observer Design_Matlab_Simulink建模(上)

  4. 学习HTML5 history API

    html5 在 history 对象上添加几个新的方法.事件.属性,用以增强开发者对于浏览器历史记录的控制.大体上说,新的API可以帮助我们在无刷新的情况下改变浏览器的url,新增或者替换之前的历史记 ...

  5. 前端调试利器 - Charles

    Docs 开发之 Charles 配置指南 1.下载与安装 charles-proxy-4.1.4 .dmg56.12 MB已存到云盘下载 2.激活 使用公司正版license 激活 安装证书 点击证 ...

  6. 搭建 LNMP 环境

    搭建 LNMP 环境 搭建 Nginx 静态服务器 安装 Nginx 使用 yum 安装 Nginx: yum install nginx -y 修改 /etc/nginx/conf.d/defaul ...

  7. 美团动态线程池实践思路开源项目(DynamicTp),线程池源码解析及通知告警篇

    大家好,这篇文章我们来聊下动态线程池开源项目(DynamicTp)的通知告警模块.目前项目提供以下通知告警功能,每一个通知项都可以独立配置是否开启.告警阈值.告警间隔时间.平台等,具体代码请看core ...

  8. Django + Taro 前后端分离项目实现企业微信登录

    前言 还是最近在做的一个小项目,后端用的是Django搭配RestFramework做接口,前端第一次尝试用京东开源的Taro框架来做多端(目前需要做用于企业微信的H5端和微信小程序) 本文记录一下企 ...

  9. kali下安装docker

    前期准备 物理机:win10 虚拟机:kali 2021 网络连接方式:桥接 一.简介 Vulhub: 是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译.运行一个完整的漏洞 ...

  10. 微信小程序--设置和获取剪切板内容

    设置 wx.setClipboardData  // 复制功能 获取 wx.getClipboardData // 粘贴功能     let _this = this     wx.setClipbo ...