This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
mysql [2021/02/10 21:46] 127.0.0.1 external edit |
mysql [2023/03/08 16:09] (current) xujianglong ↷ Page moved from 内部资料:mysql to mysql |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== MySQL安装 ====== | ||
+ | |||
+ | ===== WSL中MySQL与设置 ===== | ||
+ | |||
+ | 参见:[[https:// | ||
+ | |||
====== 常用操作 ====== | ====== 常用操作 ====== | ||
Line 4: | Line 10: | ||
<code sql> | <code sql> | ||
- | create user '< | + | CREATE USER '< |
</ | </ | ||
+ | |||
===== 创建数据库 ===== | ===== 创建数据库 ===== | ||
<code sql> | <code sql> | ||
- | create database | + | CREATE DATABASE |
-- 设置为utf8格式 | -- 设置为utf8格式 | ||
- | create database | + | CREATE DATABASE |
</ | </ | ||
+ | |||
===== 用户授权 ===== | ===== 用户授权 ===== | ||
<code sql> | <code sql> | ||
-- 授予所有数据库的所有权限 | -- 授予所有数据库的所有权限 | ||
- | grant all privileges | + | GRANT ALL privileges |
-- 授予单个数据库的所有权限 | -- 授予单个数据库的所有权限 | ||
- | grant all privileges | + | GRANT ALL privileges |
</ | </ | ||
+ | |||
====== MySQL常用脚本 ====== | ====== MySQL常用脚本 ====== | ||
Line 26: | Line 38: | ||
<code sql> | <code sql> | ||
- | show table status; | + | SHOW TABLE STATUS; |
</ | </ | ||
+ | |||
===== 数据脱敏(录入批量修改手机号码后四位) ===== | ===== 数据脱敏(录入批量修改手机号码后四位) ===== | ||
<code sql> | <code sql> | ||
- | update | + | UPDATE |
- | set phone = replace(phone, SUBSTRING(phone, | + | SET phone = REPLACE(phone, SUBSTRING(phone, |
--replace函数用于做字符串替换 | --replace函数用于做字符串替换 | ||
--substring函数用于获取字符串/ | --substring函数用于获取字符串/ | ||
Line 38: | Line 52: | ||
--floor函数用于向下取整 | --floor函数用于向下取整 | ||
--rand函数用于生成随机数(生成结果是在0到1之间的小数) | --rand函数用于生成随机数(生成结果是在0到1之间的小数) | ||
+ | |||
</ | </ | ||
+ | |||
===== 查看数据库大小 ===== | ===== 查看数据库大小 ===== | ||
Line 45: | Line 61: | ||
--大小以MB为单位 | --大小以MB为单位 | ||
SELECT TABLE_SCHEMA, | SELECT TABLE_SCHEMA, | ||
+ | |||
</ | </ | ||
+ | |||
===== 生成随机姓名 ===== | ===== 生成随机姓名 ===== | ||
Line 51: | Line 69: | ||
DELIMITER // | DELIMITER // | ||
CREATE FUNCTION generateRandomName() | CREATE FUNCTION generateRandomName() | ||
- | RETURNS | + | RETURNS |
BEGIN | BEGIN | ||
- | DECLARE xing varchar(2056) DEFAULT ' | + | DECLARE xing VARCHAR(2056) DEFAULT ' |
- | DECLARE ming varchar(2056) DEFAULT ' | + | DECLARE ming VARCHAR(2056) DEFAULT ' |
- | + | ||
- | DECLARE l_xing | + | DECLARE l_xing |
- | DECLARE l_ming | + | DECLARE l_ming |
- | + | ||
- | DECLARE return_str | + | DECLARE return_str |
- | + | ||
# 先选出姓 | # 先选出姓 | ||
SET return_str = CONCAT(return_str, | SET return_str = CONCAT(return_str, | ||
- | | + | |
# | # | ||
SET return_str = CONCAT(return_str, | SET return_str = CONCAT(return_str, | ||
- | | + | |
IF RAND()> | IF RAND()> | ||
# | # | ||
SET return_str = CONCAT(return_str, | SET return_str = CONCAT(return_str, | ||
END IF; | END IF; | ||
- | | + | |
RETURN return_str; | RETURN return_str; | ||
END;// | END;// | ||
DELIMITER ; | DELIMITER ; | ||
+ | |||
</ | </ | ||
+ | |||
===== 删除重复数据 ===== | ===== 删除重复数据 ===== | ||
Line 82: | Line 102: | ||
<code sql> | <code sql> | ||
- | delete | + | DELETE |
INNER JOIN dates t2 | INNER JOIN dates t2 | ||
WHERE | WHERE | ||
Line 89: | Line 109: | ||
t1.month = t2.month AND | t1.month = t2.month AND | ||
t1.year = t2.year; | t1.year = t2.year; | ||
+ | |||
</ | </ | ||
+ | |||
====== MySQL备份与恢复 ====== | ====== MySQL备份与恢复 ====== | ||
Line 100: | Line 122: | ||
# | # | ||
mysqldump -u < | mysqldump -u < | ||
+ | |||
</ | </ | ||
+ | |||
===== 恢复 ===== | ===== 恢复 ===== | ||
<code bash> | <code bash> | ||
mysql -u < | mysql -u < | ||
+ | |||
</ | </ | ||
+ | |||
===== 备份与恢复示例 ===== | ===== 备份与恢复示例 ===== | ||
Line 115: | Line 141: | ||
<code bash> | <code bash> | ||
mysqldump -u test -p 123456 test_db > test_db.bak.sql | mysqldump -u test -p 123456 test_db > test_db.bak.sql | ||
+ | |||
</ | </ | ||
+ | |||
* 需要恢复数据库的机器上先重建老数据库(如果没有老数据库跳过该步骤) | * 需要恢复数据库的机器上先重建老数据库(如果没有老数据库跳过该步骤) | ||
<code bash> | <code bash> | ||
- | mysql -u test -p 123456 | + | mysql -u test -p 123456> drop database test_db; |
- | > drop database test_db; | + | |
> create database test_db default character set utf8 default collate utf8_general_ci; | > create database test_db default character set utf8 default collate utf8_general_ci; | ||
+ | |||
</ | </ | ||
+ | |||
* 使用mysql命令行恢复数据库 | * 使用mysql命令行恢复数据库 | ||
<code bash> | <code bash> | ||
mysql -u test -p 123456 test_db < test_db.bak.sql | mysql -u test -p 123456 test_db < test_db.bak.sql | ||
+ | |||
</ | </ | ||
+ | |||
====== 常见问题与解决方案 ====== | ====== 常见问题与解决方案 ====== | ||
===== 远程连接数据库提示111 Connection refused. ===== | ===== 远程连接数据库提示111 Connection refused. ===== | ||
- | 需要修改mysql配置文件,注释掉bind-server=127.0.0.1启用远程连接。Ubuntu下,MySQL配置文件路径'' | + | 需要修改mysql配置文件,注释掉bind-server=127.0.0.1启用远程连接。Ubuntu下,MySQL配置文件路径'' |
+ | |||
+ | ===== 本地登录时加127.0.0.1才能登录而不能用localhost ===== | ||
+ | |||
+ | 直接通过localhost登录或者加-h localhost,提示Can' | ||
+ | |||
+ | < | ||
+ | [client] | ||
+ | host=127.0.0.1 | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====== InnoDB Failing to start / MySQL not loading plugins ====== | ||
+ | |||
+ | < | ||
+ | rm -rf / | ||
+ | |||
+ | </ | ||