安装
ubuntu2020.04
1 | sudo apt install mysql-server mysql-client |
win10系统安装
可下载exe安装,这里介绍免安装方式:MySQL Community Server 免安装下载(noninstall)
下载,选择“MySQL Community Server”:https://dev.mysql.com/downloads/。
依赖,在安装MySQL之前,Microsoft Visual C++ 2015 Redistributable Package 要安装在Windows系统上。如果已经有了,可以忽略。
解压下载的mysql-8.0.19-x64.zip,到软件的安装位置,如D:/Program Files,避免中文路径。
添加到环境变量path,比如D:/Program Files/mysql-8.0.19-x64/bin。环境变量设置方式这里不多介绍(此电脑 > 属性 > 高级系统设置 > 高级 > 环境变量)。
初始化data目录,通过免安装方法下载的ZIP文件中不包含data目录。需要通过创建数据目录并填充mysql系统数据库中的表来初始化MySQL安装。有两个命令可以使用:
- mysqld –initialize:生成随机的初始root密码,记录下随机密码,后续改成自己的密码时需要。
- mysqld –initialize-insecure:不会生成root密码mysql -u root –skip-password # 如果安装使用的–initialize-insecure,跳过密码
1
2
3
4
5
6
7
8
9
10
11管理员权限打开cmd或powershell,输入:`mysqld --initialize-insecure --console`。在Windows上,使用 --console选项 会将消息定向到控制台
6. 启动mysql服务。cmd或者powershell中输入:`mysqld --console`,可以从其他的cmd窗口中使用mysql客户端访问mysql服务(`mysql -u root -p`)。关闭这个窗口就可以把MySQL服务器关掉了,也可以在新的终端中输入`mysqladmin -u root shutdown`,也可以关闭MySQL服务器。
7. 将MySQL服务安装为Windows服务,之前的步骤可以使用是为临时使用。请以管理员方式打开PowelShell或者cmd,输入`mysqld --install`,该指令默认的服务名为MySQL,启动类型是开机自启。
也可指定服务名,不推荐`mysqld --install 服务名`。
8 启动上一步骤的服务。在终端中使用`net start mysql`启动MySQL的服务了;通过命令`net stop mysql`停止服务。
9. 配置root密码。连接到服务:或者
mysql -u root -p # 回车后输入当时的临时密码。
进入mysql命令行, 输入
alter user ‘root’@’localhost’ identified by ‘新密码’;
commit;
quit;
1 |
|
mysqlshow -u root -p
mysqlshow mysql -u root -p
mysqladmin version status proc -u root -p
mysql -e “select User, Host, plugin from mysql.user” mysql -u root -p
1 |
|
通过以上user和password登录mysql服务
1
2
3
4$ mysql -u debian-sys-maint -p
Enter password:
# 输入密码进入添加root账户登录,并修改密码为123456
1
2> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
> exit # 退出重启mysql服务
1
2sudo service mysql stop
sudo service mysql start以root用户名登录
1
2
3$ mysql -u root -p
Enter password: # 此处输入密码123456
>
mysql恢复idb数据表
恢复数据表user:
- 先建立和之前user表一样的表结构,再数据库目录下会建立user.idb文件。
- 执行
alter table
userdiscard tablespace ;
,数据库目录下的user.idb文件会删除; - 复制需要恢复的user.idb文件到该目录下。可以给这个文件加权限,所有者mysql ,权限660(你可以参考别的ibd文件所有者和权限设置),如果不需要,可忽略;
- 执
alter table
userimport tablespace;
,数据表中的数据即可读。 - 注意,如果旧表和新表的create table语句不一样,数据import会出错,保证新表和旧表的创建语句一致;
注意:如果有外键关联:
1 | # 取消外键约束 |
复制表
1 | # 查询表建立语句 |
复制user表的创建语句,修改表名为user1,执行语句;
1 | insert into user1 select * from user limit 10; |
复制表user的数据,限制10条。
复制创建表
1 | # 创建表,不拷贝数据 |
清空表数据
清空表数据,不删除表结构
1 | # truncate速度快,不记录log,删除所有数据。 |
修改表名
1 | rename table user1 to user2; |
修改列名
1 | alter table user change old new int; |
插入列
1 | alter table user add column status INT NOT NULL DEFAULT 0; |
修改列属性
1 | alter tagitble user modify column id varchar(50); |
更新列
1 | update user set col1='pum' where id=5; |
更新某列的时间
1 | update user set create_time=ADDTIME(DATE('2022-05-05 23:00:00') + INTERVAL 0 HOUR, TIME(create_time)) where id=5; |
删除列
1 | alter table strip drop column status; |
删除unique key
1 | alter table strip drop index uk_name; |
删除指定条件数据
1 | delete from use where id = 5; |
二,ibd方式其实很简单,
生成数据结构(有的可以跳过)
1,创建一个新库
2,新库里新建一个表,名字和回复的表一样。
字段数量一样(字段类型和名字都无所谓)
3,将之前的frm文件拷贝覆盖当前的。
4,重启mysql
生成数据
5,关闭mysql服务
6,mysql.ini 增加 innodb_force_recovery = 6
7,开启mysql服务
8,运行命令 alter table 表名 discard tablespace;
9,将老的ibd复制进来
10,运行命令 alter table 表名 import tablespace;
11,关闭mysql服务
12,mysql.ini 删除 innodb_force_recovery = 6
13,开启Mysql服务。
完成