study-23: Mysql基本命令实践

1,Mysql数据库用户安全策略介绍

安装mysql数据库后,默认的管理员root密码为空,这很不安全。

1)增加system并提升为超级管理员,即和root等价的用户,只是名字不同

mysql > grant all privileges on *.* to system@'localhost' identified by 'oldboy123' with grant option;

mysql > flush privileges;


2)除system用户外,删除所有mysql中的用户,包括root超级用户

mysql > delete from mysql.user where user != 'system';


2,创建指定字符集的数据库

create database example_utf8 character set utf8 collate utf8_general_ci;

create database example_gbk character set gbk collate gbk_chinese_ci; 


3,显示数据库

show databases;

show databases like '%xxx%'


查询当前选择的数据库:

select database()


查询登录用户:

select user()


4,删除数据库

drop database xxxx;


5,查询所有的表

show tables;

show tables from xxx库;


6,创建用户并授权

GRANT ALL ON xx库.* TO ‘xxx’@'localhost' IDENTIFIED BY  'xxxxx'

查看授权:
show grants for 'xxx'@'xxx'


7,局域网内主机远程链接数据库

grant all on *.* to  test@'10.0.0.%' identified by '123456';

grant all on *.* to  test@'10.0.0.0/255.255.255.0' identified by '123456';



8,收回 INSERT 权限

REVOKE INSERT ON xxx数据库.* FROM 'jeffrey'@'localhost';


权限列表:

SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , REFERENCES , INDEX , ALTER , CREATE TEMPORARY TABLES,

LOCK TABLES , EXECUTE , CREATE VIEW , SHOW VIEW , CREATE ROUTING , ALTER ROUTING , EVENT , TRIGGER 


#在授权时,可以授权用户最小的满足业务需求的权限,而不是一味的授权 “ALL PRIVILEGES”


9,企业生产环境如何授权用户

1),博客、CMS等产品的数据库安装前

对web链接用户授权尽量采用最小化原则,安装一般是 select , insert ,update , delete , create, drop 权限


2),生成数据库表后,要收回create ,drop授权

revoke insert on blog.* from xxx@xxxx;

revoke drop on blog.* from xxx@xxxx;


3),生产环境针对主库(写为主读为辅)用户的授权:

普通环境:

本机:lnmp,lamp环境数据库授权

grant all privileges on blog.* to blog@'localhost' identified by '123456';


应用服务器和数据库不在一个主机上的授权:

grant all privileges on blog.* to blog@'10.0.0.%' identified by '123456';


严格的授权:重视安全,忽视了方便:

grant select, insert, update, delete on blog.* to blog@'10.0.0.%' identified by '123456';


4),生产环境针对从库(只读)用户授权:

grant select on blog.* to blog@'10.0.0.%' identified by '123456';


10,建表


11,数据库全量备份

mysqldump -uroot -p123456 -B -S /data/3306/mysql.sock mysql > /opt/1.sql


12,数据库全量恢复

mysql -uroot -p123456 -S /data/3306/mysql.sock mysql < /opt/1.sql


13,如何避免乱码(执行 set names 是临时生效):

1)mysql命令行下:set names utf8;

2)备份.sql文件中,指明:set names utf8;

3)导入时指定:mysql -uroot -p123456 --default-character-set=utf8  xx数据库名  <   xxxx.sql

4)my.cnf的配置文件:

[ client ] 

default-character-set=utif8;

[ mysqld ]

default-character-set=utif8;


# 与客户端字符集有变化关系的几个参数(默认和/etc/sysconfig/i18n系统字符集一致),执行set names 实际就是修改下面三个参数的默认值:

character_set_client

character_set_connection

character_set_results

( mysql -uroot -p123456 -S /data/3306/mysql.sock -e "show variables like 'character_set%'"; )


# 防止乱码:保证 客户端字符集 与 建库建表 的字符集一致


14,更改生产线上Mysql数据字符集的方案(例如从 latin1 修改为 utf8):

1)库及表的语句导出,sed 批量修改表结构字符集为utf8   (只导出结构:mysqldump -uroot -p123456 -S /data/3306/mysql.sock -d 数据库名> /opt/111.sql)

2)导出所有数据 ( 只导出数据:mysqldump -uroot -p123456 -S /data/3306/mysql.sock -t mysql > /opt/111.sql )

3)修改mysql配置文件my.cnf中的[client] [mysqld] 字符集为utf8

4)删除原有的库表及数据

5)导入新的建库及建表的语句

6)导入mysql的所有数据






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值