Skip to main content

极空间安装Mariadb并远程访问

通过Docker按照Mariadb

下载Mariadb镜像

image-20241203004330112

创建Mariadb容器

image-20241203004519193 image-20241203004727334 image-20241203004830086 image-20241203005050752

通过Docker安装phpmyadmin

下载phpmyadmin镜像

image-20241203005331815

创建phpmyadmin容器

image-20241203005606907 image-20241203005657588

配置远程phpmyadmin

配置

image-20241203010044652

访问

image-20241203010452667

image-20241203010535188

配置sequel Pro

配置

image-20241203010928092

通过Docker的Mariadb ssh连接数据库 并导入数据

创建sdb库

image-20241203011940224

将待导入数据拷贝到极空间的Mariadb文件夹中

image-20241203011331975

通过Mariadb ssh终端来导入文件

image-20241203011456847

image-20241203011742146

# 1 定位到极空间Mariadb待导入的文件夹
cd /var/exported_db_files/
# 2 安装gpg-agent程序 导入gpg key
apt update
apt install gpg-agent
gpg --import gpg-cp-pub-key_2023.txt
gpg --import gpg-cp-pri-key_2023.txt
gpg --edit-key jhong@sgm.com

# 2 安装pv程序 用于监控导入进度
apt update
apt show pv
apt install pv

# 执行数据导入命令
pv sdb-2024-12-2-23-45.sql.gz | gunzip | mariadb -uroot -p123456 -f sdb
bash sshdb-import-fulldb-docker-batch.sh

配置|调优|运维

通过sequel ace 数据库管理软件 添加新用户

  1. 配置sequel ace 访问mariadb
  2. 连接上mariadb
  3. cmd+u快捷键 打开数据库用户管理
  4. 添加新用户和密码
  5. 配置新用户为本的还是远程
  6. 配置新用户权限
  7. 完成添加

备份和还原

带压缩的备份和还原数据库

# 备份 k数据库 保存到 k-09-15.sql.gz
mysqldump -uroot -p123456 k | gzip > k-09-15.sql.gz
# 还原 k-09-15.sql.gz 到k数据库
gunzip < /volume1/download/k-09-15.sql.gz | mysql -uroot -p k

备份数据库

# 备份 sdb数据库 保存到 sdb.sql
mysqldump -uroot -p123456 --database sdb > sdb.sql;
# 还原 sdb数据库 来自sdb.sql备份文件
source sdb.sql

# 导出数据库:
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
# 导出表:
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名;
# 导出数据库结构:
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql;
# 例子1 导出整个数据库
mysqldump -uroot -p123456 k_qa > /volume1/soft/DB\ copy/k_qa_1027_05_13.sql
# 例子2 导出一个表
mysqldump -u user_name -p database_name table_name > outfile_name.sql
#例子3 导出一个数据库结构
# -d = 没有数据
# –add-drop-table = 在每个create语句之前增加一个drop table
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql

还原数据库

# 1.创建数据库(mysql 命令):
create database <数据库名>;
# 2.导入数据到数据库:
mysql -u用户名 -p密码 数据库 <文件名>
# 如果导入过程出错导致导入中断,可以加 -f参数 忽略错误 继续导入:
mysql -u用户名 -p密码 -f 数据库 < 文件名>
# 例子
# 1 创建k_qa 数据库
create database k_qa;
# 2 还原数据到k_qa
mysql -uroot -p123456 k_qa < /volume1/soft/DB\ copy/k_qa_2017-05-12.sql

SequelPro导入出现错误: Unknown collation: 'utf8mb4_0900_ai_ci'

# 说明本地的mariadb不支持,只需要将待导入的sql文件用sed批量替换即可
sed -i '' 's/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g' star-2024-7-8-17-57-59.sql
# 这个命令的解释如下:
## sed:流编辑器,用于对输入文本进行基于模式的编辑。
## -i '':表示直接修改输入文件,而不是将修改后的内容输出到标准输出。
## 's/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g':这是一个 sed 表达式,用于查找并替换模式。s 表示替换(substitute),/ 是分隔符,utf8mb4_0900_ai_ci 是要查找的模式,utf8mb4_general_ci 是要替换成的模式,g 表示全局替换(global),即替换每一行中的所有匹配项。
## my_database.sql:要处理的 SQL 文件名。

参考:相关命令

建立数据库连接

# 命令格式(连本机可省主机地址):
mysql -h主机地址 -u用户名 -p用户密码
# 本机例子:
mysql -uroot -p123456
# 远程例子:
mysql -h192.168.0.200 -uroot -p123456
# 退出
exit;

修改密码

# 命令格式:
mysqladmin -u用户名 -p旧密码 password 新密码
# 例子1 (root 初始密码为空,可省略“-p旧密码”):
mysqladmin -uroot -password 1234abcd
# 例子2:
mysqladmin -uroot -p1234abcd password 123abc

增加用户

# 命令格式(mysql 命令):
grant select,insert,update,delete on 数据库.* to 用户名@登录主机 identified by “密码”;
# 例子1:新增用户test1 密码为abc,可在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限:
grant select,insert,update,delete on *.* to [email=test1@”%]test1@”%[/email]” Identified by “abc”;
# 新增用户test2 密码为abc,只可在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作:
grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;

创建数据库

# 命令格式(mysql 命令):
create database <数据库名>;
# 例子1 建立一个名为xhkdb的数据库:
mysql> create database xhkdb;
# 创建数据库并分配用户,依次执行3个命令完成数据库创建:
CREATE DATABASE 数据库名;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码';
SET PASSWORD FOR '数据库名'@'localhost' = OLD_PASSWORD('密码’);

显示数据库

# 命令格式(mysql 命令):
show databases;

删除数据库

# 命令格式(mysql 命令):
drop database <数据库名>;
# 例子 删除一个名为sgm的数据库:
mysql> drop database sgm;
# 例子 删除一个名为sgm的数据库(不确定是否存在):
mysql> drop database if exists sgm;

连接数据库

# 命令格式(mysql 命令):
use <数据库名>;
# 例子:
mysql> use sgm;

创建表

# 命令格式(mysql 命令):
create table <表名>(<字段名1><类型1>[,…<字段名n><类型n>]);
# 例子:建立一个名为MyClass的表,
# | 字段名 | 数字类型 | 数据宽度 | 是否为空 | 是否主键 | 自动增加 | 默认值 |
# | ------ | -------- | -------- | -------- | ----------- | -------------- | ------ |
# | id | int | 4 | 否 | primary key | auto_increment | |
# | name | char | 20 | 否 | | | |
# | sex | int | 4 | 否 | | | 0 |
# | degree | double | 16 | 是 | | | |
mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));

删除表

# 命令格式(mysql 命令):
drop table <表名>;
# 例子:
mysql> drop table MyClass;

插入数据

# 命令格式(mysql 命令):
insert into <表名> [(<字段名1>[,…<字段名n>])] values (值1)[,…(值n)];
# 例子:往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为82.99, 编号为3 的名为Wang 的成绩为96.5。
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
# 注意:insert into每次只能向表中插入一条记录。

查询数据

# 命令格式(mysql 命令):
select <字段1,字段2,...> from < 表名 > where < 表达式 >
# 例子: 查看表 MyClass 中所有数据
mysql> select * from MyClass;
# 例子: 查看表 MyClass 中前2行数据
mysql> select * from MyClass order by id limit 0,2;

删除数据

# 命令格式(mysql 命令):
delete from 表名 where 表达式****;
# 例如:删除表 MyClass中编号为1 的记录
mysql> delete from MyClass where id=1;

修改数据

# 命令格式(mysql 命令):
update 表名 set 字段=新值,… where 条件****;
# 例子:
mysql> update MyClass set name='Mary' where id=1;

增加字段

# 命令格式(mysql 命令):
alter table 表名 add 字段 类型 其他;
# 例子:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0
mysql> alter table MyClass add passtest int(4) default '0'

索引编辑

# 加索引
mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
# 例子:
mysql> alter table employee add index emp_name (name);
# 加主关键字的索引
mysql> alter table 表名 add primary key (字段名);
# 例子:
mysql> alter table employee add primary key(id);
# 加唯一限制条件的索引
mysql> alter table 表名 add unique 索引名 (字段名);
# 例子:
mysql> alter table employee add unique emp_name2(cardnumber);
# 删除某个索引
mysql> alter table 表名 drop index 索引名;
# 例子:
mysql>alter table employee drop index emp_name;
# 增加字段:
mysql> ALTER TABLE table_name ADD field_name field_type;
# 修改原字段名称及类型:
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
# 删除字段:
MySQL ALTER TABLE table_name DROP field_name;

修改表名

# 命令格式(mysql 命令):
rename table 原表名 to 新表名****;
# 例子:在表MyClass名字更改为YouClass
mysql> rename table MyClass to YouClass;