数据库MariaDB的基本命令(1)

计算机语言、软件、硬件
peng
Site Admin
帖子: 197
注册时间: 周五 11月 01, 2019 9:06 am

数据库MariaDB的基本命令(1)

帖子 peng »

数据库MariaDB的基本命令(1)

登录数据库
1.#mysql -hIP -u用户-p密码
2.本地可以直接mysql –uroot -p

忘记数据库root用户密码
1.#vim /etc/my.conf.d/server.conf //centos6
2.#vim /etc/my.cnf.d/server.cnf //centos7
添加skip-grant-tables,重启服务service mysqld restart或systemctl restart mysqld

查看数据库信息
1.show databases;  #查看数据库
2.show create database mysql; #查看创建数据库状态

创建数据库
1.create database 数据库名; #创建时数据库
2.create database db_name default character SET utf8 collate utf8_general_ci; #创建数据库并设置中文字符集
collate:校对集。制定数据集如何排列,按照二进制编码比较排序,主要是对字符集之间的比较和排序,collate为数据表的校对规则可以通过 show collation查看所有的校对集

修改数据库默认字符集
1.alter database 库名 default character set=utf8;

删除数据库
1.drop database 数据库名;

用户管理
1.select user(); #查看当前用户
2.select host,user from mysql.user; #查看所有用户
3.delete from mysql.user where user= ''; #删除匿名用户
注意:有时赋予用户所有权限,但是却无法查看全部数据库,是因为匿名登录的原因,需要删掉匿名用户并重启服务。

修改密码
1.use mysql;
2.select * from user \G; #最常用
3.select host,user,password from user; #查看用户的登陆位置、用户名、密码
4.update user set password=password('密码') where user='root'; #修改密码
5.SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); #原密码为空
6.#mysqladmin -uroot -p原密码 password 新密码
7.#shell下修改数据库用户密码

允许root用户远程登陆(必须删掉匿名用户)
1.update user set host='%' where user='root';

新建用户
1.create user 'username'@'host' identified by 'password'
2.说明:username:要创建的用户名
host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

权限管理
1.grant all privileges on *.* to dog@'%';
#给dog赋予所有权限;第一个*数据库(所有);第二个*表名(所有表) @:分隔符;%:本地和第三方连接都可以,也可以写localhost
2.grant select,create,update,delete on test03.grade to 'dog'@'%';
#给dog用户添加对名为test03数据库的grade表查询,创建,更新,删除的权限(在任意主机上)       
3.flush privileges; #刷新权限
4.grant all privileges on test03.grade to 'aaa'@'%';
#给aaa赋予test03数据库的grade表最高权限(在任意主机上)

查看用户的权限
1.show grants for 'username';
#查看username用户的权限(root用户)

收回username在任意数据库的任意表的最高权限
1.revoke all on *.* from 'username'@'%';

显示当前时间
1.select now();

常用的数据类型
整数:int, bit
小数:decimal    #decimal(5,2)
字符串:varchar, char  
日期时间:date, time, datetime
枚举类型(enum)

peng
Site Admin
帖子: 197
注册时间: 周五 11月 01, 2019 9:06 am

Re: 数据库MariaDB的基本命令(1)

帖子 peng »

群晖 MariaDB10 开启远程登录

群晖安装 MariaDB10 后,默认仅支持本机连接,也就是说,你的局域网电脑是连接不上的,如果需要局域网连接,需要做处理。

环境:群晖6.2、MariaDB10

处理方法:
1、使用 ssh 登录到群晖
2、进入 MariaDB 默认安装目录
cd /volume1/@appstore/MariaDB10/usr/local/mariadb10/bin
3、使用 root 登录 MariaDB,然后进行修改

root@HOME-NAS:/volume1/@appstore/MariaDB10/usr/local/mariadb10/bin# ./mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 20
Server version: 10.3.7-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use mysql
Database changed
MariaDB [mysql]> update user set host = '%' where user = 'root';
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
MariaDB [mysql]> select host,user from user;
+-----------+------+
| host | user |
+-----------+------+
| % | root |
| 127.0.0.1 | root |
| ::1 | root |
+-----------+------+
3 rows in set (0.000 sec)

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.053 sec)

MariaDB [mysql]>

其中 host 为 % 表示不限制IP,你也可以设置具体的IP地址,或者网段 192.168.1.% 这样。
另外,上面出现的 ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 不予理会,其意思是 host 为主键,不能设置重复的值。所以我们后来的查询中,host 还是3个不同的值。刚刚执行的 update 语句只成功修改了数据库中一条数据。

4、不需要重启服务,即可连接登录。

(END)

原文链接:https://blog.csdn.net/catoop/article/details/86694473

peng
Site Admin
帖子: 197
注册时间: 周五 11月 01, 2019 9:06 am

数据库MariaDB的基本命令(2)

帖子 peng »

数据库MariaDB的基本命令(2)

关键词:
视图
事物
索引
外键
视图
视图的本质是对查询的封装
视图的用途就是查询
定义视图,建议以v_开头
create view 视图名称 as select语句;

查看视图
show tables;

删除视图
drop view 视图名称;

事物
要求:表的引擎类型必须是innodb类型才可以使用事务,这是mysql表的默认引擎

查看表的创建语句,可以看到engine=innodb

开启事物

-- 开启事务后执行修改命令,变更会维护到本地缓存中,而不维护到物理表中
begin;

提交事务
--将缓存中的数据变更维护到物理表中
commit;

回滚事务
--放弃缓存中变更的数据
rollback;

索引
查看索引
show index from 表名;

创建索引
--1、建表时创建
create table create_index(
id int primary key,
name varchar(10) unique,
age int,
key (age)
);

--2、对已经存在的表添加索引
create index age_index on table_name(age);

删除索引
drop index 索引名称 on 表名;

外键
查看外键
show create table 表名;

添加外键
--FK_ID为外键名字
alter table 表名 add constraint FK_ID foreign key(要添加的外键字段名) references 外表表名(对应的表的主键字段名);

peng
Site Admin
帖子: 197
注册时间: 周五 11月 01, 2019 9:06 am

Re: 数据库MariaDB的基本命令(1)

帖子 peng »

3.1 查询库和表

数据库mariadb的最大组成单位是库,库又是由表组成。
表由记录数据的行和列(字段)组成

SHOW DATABASES; 查询包含的库
USE DATABASENAME;(USE mysql;) 进入一个库中,进入mysql库中
SHOW TABLES; 查询库中的表,列出所有的表名
SELECT * FROM TABLE; 在特定的表中查询所有字段
SELECT Host Form user; 在特定的表user中查询Host字段
SELECT Host Form user WHERE User='root'; 找出user表中所有User='root'的行,并且显示该行的Host

peng
Site Admin
帖子: 197
注册时间: 周五 11月 01, 2019 9:06 am

Re: 数据库MariaDB的基本命令(1)

帖子 peng »

3.2 建立库和表

SHOW DATABASES; #列出库
CREATE DATABASE westos; #建立库
USE westos; #进入westos库
CREATE TABLE linux ( #建立表
-> username varchar(50) not null, #要求输入不能为空,后面的逗号不能少。
-> password varchar(50)(字符长度最大50) not null
-> );

DESC linux; #查看表结构(表中的所有字段)
INSERT INTO linux VALUES ('lee','123'); #插入数据到linux表中
SELECT * FROM linux; #查询所有字段在linux表中
SELECT username FROM linux; #查询指定字段在linux表中

peng
Site Admin
帖子: 197
注册时间: 周五 11月 01, 2019 9:06 am

Re: 数据库MariaDB的基本命令(1)

帖子 peng »

3.3 更改表

UPDATE linux SET pssword=password('lee') WHERE username='lee'; #重新使用password加密方式加密lee用户的密码
ALTER TABLE linux ADD class varchar(20); #默认在linux表中最后一列加入class字段
ALTER TABLE linux DROP class; # 丢弃class字段
ALTER TABLE linux ADD age varchar(20) AFTER password; #在password后面加入age字段
UPDATE linux SET age='15' WHERE username='lee'; #若不加where条件,所有用户的age都会设定为15
ALTER TABLE linux RENAME redhat; #重新将表linux命名为redhat

peng
Site Admin
帖子: 197
注册时间: 周五 11月 01, 2019 9:06 am

Re: 数据库MariaDB的基本命令(1)

帖子 peng »

3.4 删除表中数据及表和库

DELETE FROM redhat WHERE username='lee'; #指定一个条件,username=lee
DELETE FROM redhat WHERE username='lee' or username='lee1'; #同一个条件下,删除多个目标。满足其中一个条件的都会被删除
DELECT FROM redhat WHERE username='lee' and age='12' #指定不同条件,同时满足两个条件的才会被删除
DELECT FROM redhat WHERE username='lee' or age='12' #指定不同条件,满足其中一个条件的都会被删除
DROP TABLE userlist1; #(已经在westos库中)在特定的库中丢弃表userlist1
DROP DATABASE westos;

peng
Site Admin
帖子: 197
注册时间: 周五 11月 01, 2019 9:06 am

Re: 数据库MariaDB的基本命令(1)

帖子 peng »

3.5 用户授权

1.用户的建立
CREATE USER lee@'localhost' identified by 'westos'; #用户的建立,lee只能在本机登陆,密码为westos
CREATE USER lee@'%' identified by 'westos'; #用户的建立 lee可以远程登陆登陆 密码为westos,和上条命令创建的是不同用户
SELECT * FROM mysql.user #查看数据库中的用户信息

2.用户的授权,可以授权的权力有SELECT,INSERT,CREATE,DROP,DELETE,ALTER,UPDATE
GRANT SELECT,INSERT on westos.* TO lee@localhost; #给lee用户开放select,insert权力
SHOW GRANTS FOR lee@localhost; #查看用户lee的权力
REVOKE INSERT ON westos.* FROM lee@localhost; #收回lee用户的insert权力
DROP USER lee@localhost #删除用户lee

FLUSH PRIVILEGES; #如果语句没有生效,刷新


3.创建的可以远程登陆的用户如何登陆:
在server虚拟机中:
yum whatprovides */mysql
yum install mariadb-5.5.52-1.el7.x86_64 #名字可能略有不同

将数据库服务端的3306端口打开,将vim /etc/my.cnf
删掉语句skip-networking=1
systemctl restart mariadb
systemctl stop firewalld
在server虚拟机中mysql -ulee -h172.25.254.133 -pwestos #检查能否登陆

peng
Site Admin
帖子: 197
注册时间: 周五 11月 01, 2019 9:06 am

Re: 数据库MariaDB的基本命令(1)

帖子 peng »

3.6 用户授权

数据库备份
mysqldump -uroot -pwestos westos > /mnt/westos.sql #将westos数据库备份到/mnt目录下的westos.sql
mysqldump -uroot -pwestos westos --no-data #只备份数据库westos的结构(有哪些字段),不备份数据
mysqldump -uroot -pwestos --all-database #备份所有数据库
mysqldump -uroot -pwestos --all-database --no-data #备份所有数据库的结构,不备份结构


恢复方式1:
mysql -uroot -p -e "CREATE DATABASE westos;"
mysql -uroot -pwestos westos < /mnt/westos.sql

恢复方式2:
vim /mnt/westos.sql
加入语句:CREATE DATABASE westos;
USE westos;
mysql -uroot -pwestos < /mnt/westos.sql

peng
Site Admin
帖子: 197
注册时间: 周五 11月 01, 2019 9:06 am

Re: 数据库MariaDB的基本命令(1)

帖子 peng »

3.7 超级用户的密码管理

情况一:
当知道超级用户原始密码时,超户密码的修改:
mysqladmin -uroot -pwestos password lee #将用户root的密码改为lee

情况二:
当超级用户密码忘记时,重新设定超户的密码:
第一步:systemctl stop mariadb
第二步:mysqld_safe --skip-grant-tables &
第三步:mysql
update mysql.user set Password='westos' WHERE User='root' 密码会是明文,不安全
update mysql.user set Password=password('westos') where User='root'; 将密码加密了

第四步:fg
killall -9 mysqld_safe
ps aux | grep mysql
kill -9 mysql的所有进程id

第五步:systemctl start mariadb

回复