MySQL参考手册
Windows下安装MySQL(mysql-5.7.19-win32.zip/免安装版本)
-
mysql官网下载mysql-5.7.19-win32.zip包,解压到指定目录
-
(非管理员用户以管理员运行 CMD) DOS命令行进入mysql的目录
-
安装mysql服务
mysqld -install
-
初始化data目录
mysqld --initialize-insecure
或mysqld --initialize
注:5.7版本解压后不含data文件;mysqld --initialize-insecure自动生成无密码的root用户,mysqld --initialize自动生成带随机密码的root用户。data文件夹不为空不能执行这个命令,需要先删除data目录。
- 新建配置文件my.ini
[client] port=3306 default-character-set=utf8 [mysqld] port=3306 character_set_server=utf8 basedir=替换为你的mysql根目录 datadir=替换为你的mysql data目录 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [WinMySQLAdmin] C:\server\mysql-5.7.19-win32\bin\mysqld.exe
注:这个配置文件需要放到bin目录下!!!
-
启动mysql服务
net start mysql
- 配置环境变量(将mysql到bin目录配置到mysql中)
Windows下卸载MySQL(mysql-5.7.19-win32.zip/免安装版本)
-
停止mysql服务
net stop mysql
-
删除mysql服务
sc delete mysql
-
删除mysql磁盘文件
重置MySQL密码(忘记密码)
- 停止mysql服务
net stop mysql
- 输入
mysqld --skip-grant-tables
回车,启动MySQL服务的时候跳过权限表认证。注:刚才那个DOS窗口已经不能动了,再开一个DOS窗口,如果成功,将出现MySQL提示符 >。
-
输入
use mysql
回车,连接权限数据库。 -
改密码
update user set authentication_string=password("新密码") where user="root";
-
刷新权限
flush privileges;
-
退出
quit
- 启动服务
net start mysql
注:如果无法启动,结束“mysqld.exe”进程,重新启动服务。
创建用户并给用户赋值对应数据库权限
-
mysql 创建用户步骤:
INSERT INTO mysql.user (HOST,USER,PASSWORD) VALUES('%','test', PASSWORD('test'));
或
CREATE USER test@'%' IDENTIFIED BY 'test';
增加一个test用户,密码为test,%表示不限制登录IP,可以加个IP表示只能在192.168.1.1上登录
- 给用户赋权限值:
GRANT ALL PRIVILEGES ON test.* TO test@'%' IDENTIFIED BY 'test';
给test用户赋值test库的所有权限,也可以只赋值select, insert, update, delete。
- 刷新权限
FLUSH PRIVILEGES;
#### MSYQL 锁 1.共享锁(读锁/S锁):允许多个连接并发的读取统一资源。 加锁方式:SELECT * FROM table LOCK IN SHARE MODE 释锁方式:COMMIT/ROLLBACK 2.排他锁(写锁/X锁):写的同时阻塞其他写或读操作,保证同一时刻只能有一个连接写入数据。 INSERT/DELETE/UPDATE默认加了X锁 加锁方式:SELECT * FROM table FOR UPDATE 释锁方式:COMMIT/ROLLBACK 3.意向共享锁(表锁/IS) 4.意向排他锁(表锁/IX) 5.锁策略 表锁: 行锁:
MYSQL 事务
事务并发引发的三大问题: 1.脏读:事务A读取到事务B更新回滚的数据。 2.不可重复读: 事务A两次去读的数据不一样(事务A第二次读取的是事务B修改后的数据)。 3.幻读:事务A第一次获取n条数据,事务B添加了m行数据,事务A第二次获取的数据是n+m条。 1.ACID特性 2.隔离级别 https://ask.qcloudimg.com/http-save/yehe-2728002/hdyvs2vd12.jpeg?imageView2/2/w/1620 1.READ UNCOMMITTED(未提交读):事务未提交的数据,对其他事务也是可见的,会出现脏读。 2.READ COMMITTED(提交读):一个事务开始之后,只能看见已提交事务做的修改,会出现不可重复读。 3.REPEATABLE READ(可重复读):同一事务中多次去读数据的结果是一样的,会出现幻读(除InDB外)。 4.SERIALIZABLE(可串行化):最高的隔离级别,强制所有事务串行执行。
参考:https://www.cnblogs.com/wangkaihua/archive/2019/01/03/10217490.html