Mysql

知识会更新,数据库系统也一样,本文只保证对Mysql 5.7以及MariaDB 10有效。

编码篇

  • 展示当前默认的编码和字符集
SHOW VARIABLES LIKE  'char%';
  • 修改服务器默认编码,通过修改配置文件*.cnf
skip-character-set-client-handshake
collation-server=utf8_unicode_ci  #特定字符集,如果没有特殊要求可以注释
character-set-server=utf8

统一表名大小写

修改配置文件*.cnf,加入

lower_case_table_names=1

这将强制保存的表名具体文件为小写,但在逻辑层面表名不再大小写敏感; 为什么这么干?因为阿里云RDS这么干?好处还是蛮多的,想了解更细节的规则或者有定制化的需求还是应该参考官方手册

用户和授权篇

  • 获取当前用户
select user();
  • 获取用户列表
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
  • 创建一个可远程登录的用户root,并且设定明文密码
CREATE USER 'root'@'%' IDENTIFIED BY 'rawPasswd';
  • 授予可远程登录的root所有权限
GRANT ALL on * to 'root'@'%' WITH GRANT OPTION;
  • 将dbname的所有权限赋予dbuser
GRANT ALL on dbname.* to 'dbuser'@'%';
  • 修改密码
SET PASSWORD FOR 'dbuser'@'%' = PASSWORD('rawPasswd');
  • 删除用户
DROP USER 'dbuser'@'%';

导出与导入

mysql现有热备份,dump,数据表文件,文本SQL记录,增量备份,组群备份,文件系统快照等多种导出导入的方式;从易用和实用角度考虑只记录dump的导出和导入。

  • 以user的身份连接到host:port导出database数据库到dump.sql
mysqldump -h [host] --port=[port] -p -u [user] --default-character-set=utf8 [database] > dump.sql
  • 以user的身份连接到host:port导入dump.sql到database(需已存在)
mysql -h [host] --port=[port] -p -u [user] --default-character-set=utf8 [database] < dump.sql
  • 或者以user的身份登录到host:port,再导入dump.sql
mysql -h [host] --port=[port] -p -u [user] --default-character-set=utf8 
use [database]
source dump.sql