This is an old revision of the document!
# 常用操作
## 创建用户
```sql create user '<username>'@'%' identified by '<password>'; ```
## 创建数据库
```sql create database <database_name>; ```
## 用户授权
```sql -- 授予所有数据库的所有权限 grant all privileges on *.* to '<username>'@'%'; -- 授予单个数据库的所有权限 grant all privileges on <database_name>.* to '<username'@'%'; ```
# MySQL常用脚本
## 数据脱敏(录入批量修改手机号码后四位)
```sql update `member` set phone = replace(phone, SUBSTRING(phone, -4), LPAD(FLOOR(RAND() * 10000), 4, '0')); --replace函数用于做字符串替换 --substring函数用于获取字符串/字段部分内容 --lpad函数用于左侧自动补全 --floor函数用于向下取整 --rand函数用于生成随机数(生成结果是在0到1之间的小数) ```
## 生成随机姓名 ```sql DELIMITER // CREATE FUNCTION generateRandomName() RETURNS varchar(255) CHARSET utf8 BEGIN DECLARE xing varchar(2056) DEFAULT '赵钱孙李周郑王冯陈楮卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁杜阮蓝闽席季麻强贾路娄危江童颜郭梅盛林刁锺徐丘骆高夏蔡田樊胡凌霍虞万支柯昝管卢莫经裘缪干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮龚程嵇邢滑裴陆荣翁'; DECLARE ming varchar(2056) DEFAULT '嘉懿煜城懿轩烨伟苑博伟泽熠彤鸿煊博涛烨霖烨华煜祺智宸正豪昊然明杰诚立轩立辉峻熙弘文熠彤鸿煊烨霖哲瀚鑫鹏致远俊驰雨泽烨磊晟睿天佑文昊修洁黎昕远航旭尧鸿涛伟祺轩越泽浩宇瑾瑜皓轩擎苍擎宇志泽睿渊楷瑞轩弘文哲瀚雨泽鑫磊梦琪忆之桃慕青问兰尔岚元香初夏沛菡傲珊曼文乐菱痴珊恨玉惜文香寒新柔语蓉海安夜蓉涵柏水桃醉蓝春儿语琴从彤傲晴语兰又菱碧彤元霜怜梦紫寒妙彤曼易南莲紫翠雨寒易烟如萱若南寻真晓亦向珊慕灵以蕊寻雁映易雪柳孤岚笑霜海云凝天沛珊寒云冰旋宛儿绿真盼儿晓霜碧凡夏菡曼香若烟半梦雅绿冰蓝灵槐平安书翠翠风香巧代云梦曼幼翠友巧听寒梦柏醉易访旋亦玉凌萱访卉怀亦笑蓝春翠靖柏夜蕾冰夏梦松书雪乐枫念薇靖雁寻春恨山从寒忆香觅波静曼凡旋以亦念露芷蕾千兰新波代真新蕾雁玉冷卉紫山千琴恨天傲芙盼山怀蝶冰兰山柏翠萱乐丹翠柔谷山之瑶冰露尔珍谷雪乐萱涵菡海莲傲蕾青槐冬儿易梦惜雪宛海之柔夏青亦瑶妙菡春竹修杰伟诚建辉晋鹏天磊绍辉泽洋明轩健柏煊昊强伟宸博超君浩子骞明辉鹏涛炎彬鹤轩越彬风华靖琪明诚高格光华国源宇晗昱涵润翰飞翰海昊乾浩博和安弘博鸿朗华奥华灿嘉慕坚秉建明金鑫锦程瑾瑜鹏经赋景同靖琪君昊俊明季同开济凯安康成乐语力勤良哲理群茂彦敏博明达朋义彭泽鹏举濮存溥心璞瑜浦泽奇邃祥荣轩'; DECLARE l_xing int DEFAULT LENGTH(xing) / 3; # 这里的长度不是字符串的字数,而是此字符串的占的容量大小,一个汉字占3个字节 DECLARE l_ming int DEFAULT LENGTH(ming) / 3; DECLARE return_str varchar(255) DEFAULT ''; # 先选出姓 SET return_str = CONCAT(return_str, SUBSTRING(xing, FLOOR(1 + RAND() * l_xing), 1)); #再选出名 SET return_str = CONCAT(return_str, SUBSTRING(ming, FLOOR(1 + RAND() * l_ming), 1)); IF RAND()>0.400 THEN #再选出名 SET return_str = CONCAT(return_str, SUBSTRING(ming, FLOOR(1 + RAND() * l_ming), 1)); END IF; RETURN return_str; END;// DELIMITER ; ```
# MySQL备份与恢复
[参考资料](http://www.thegeekstuff.com/2008/09/backup-and-restore-mysql-database-using-mysqldump/)
## 备份
```bash mysqldump -u <username> -p[password] <database_name> > dumpfilename.sql ```
## 恢复
```bash mysql -u <username> -p[password] <database_name> < dumpfilename.sql ```
# 常见问题与解决方案
## 远程连接数据库提示111 Connection refused.
需要修改mysql配置文件,注释掉bind-server=127.0.0.1启用远程连接。Ubuntu下,MySQL配置文件路径`/etc/mysql/mysql.conf.d/mysqld.cnf`,MariaDB配置文件路径`/etc/mysql/mariadb.conf.d/50-server.cnf`