数据库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)
数据库MariaDB的基本命令(1)
Re: 数据库MariaDB的基本命令(1)
群晖 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
群晖安装 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
数据库MariaDB的基本命令(2)
数据库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 外表表名(对应的表的主键字段名);
关键词:
视图
事物
索引
外键
视图
视图的本质是对查询的封装
视图的用途就是查询
定义视图,建议以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 外表表名(对应的表的主键字段名);
Re: 数据库MariaDB的基本命令(1)
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
数据库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
Re: 数据库MariaDB的基本命令(1)
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表中
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表中
Re: 数据库MariaDB的基本命令(1)
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
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
Re: 数据库MariaDB的基本命令(1)
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;
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;
Re: 数据库MariaDB的基本命令(1)
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 #检查能否登陆
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 #检查能否登陆
Re: 数据库MariaDB的基本命令(1)
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
数据库备份
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
Re: 数据库MariaDB的基本命令(1)
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
情况一:
当知道超级用户原始密码时,超户密码的修改:
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