一、数据库的安装机初始化
Mariadb 数据库管理系统是Mysql的一个分支,主要由开源社区在维护。
数据库
1、数据库的安装
- 检查有没有yum 源,没有的话要安装yum源
[root@server ~]# yum repolist
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
repo id repo name status
bobo bobo 5,152
repolist: 5,152
- 查找数据库
[root@server html]# yum search mysql
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
======================================================== N/S matched: mysql =========================================================
MySQL-python.x86_64 : An interface to MySQL
akonadi-mysql.x86_64 : Akonadi MySQL backend support
dovecot-mysql.x86_64 : MySQL back end for dovecot
libdbi-dbd-mysql.x86_64 : MySQL plugin for libdbi
mysql-connector-java.noarch : Official JDBC driver for MySQL
mysql-connector-odbc.x86_64 : ODBC driver for MySQL
pcp-pmda-mysql.x86_64 : Performance Co-Pilot (PCP) metrics for MySQL
perl-DBD-MySQL.x86_64 : A MySQL interface for Perl
php-mysql.x86_64 : A module for PHP applications that use MySQL databases
qt-mysql.i686 : MySQL driver for Qt's SQL classes
qt-mysql.x86_64 : MySQL driver for Qt's SQL classes
qt3-MySQL.i686 : MySQL drivers for Qt 3's SQL classes
qt3-MySQL.x86_64 : MySQL drivers for Qt 3's SQL classes
qt5-qtbase-mysql.i686 : MySQL driver for Qt5's SQL classes
qt5-qtbase-mysql.x86_64 : MySQL driver for Qt5's SQL classes
rsyslog-mysql.x86_64 : MySQL support for rsyslog
mariadb.x86_64 : A community developed branch of MySQL
mariadb-devel.i686 : Files for development of MariaDB/MySQL applications
mariadb-devel.x86_64 : Files for development of MariaDB/MySQL applications
mariadb-libs.i686 : The shared libraries required for MariaDB/MySQL clients
mariadb-libs.x86_64 : The shared libraries required for MariaDB/MySQL clients
- 安装数据库
yum install mariadb-server.x86_64 -y
- 开启mysql数据库
[root@server html]# systemctl start mariadb.service
[root@server html]# systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
安全初始化
设置数据库密码
mysql_secure_installati
Enter current password for root (enter for none): #原来没有密码 不用输入
Set root password? [Y/n] #是否设置超级用户密码 默认设置
New password: #输入密码
Re-enter new password: # 重复密码
Password updated successfully!
Reloading privilege tables..
... Success!
Remove anonymous users? [Y/n] #禁止匿名用户登录 默认禁止
... Success!
Disallow root login remotely? [Y/n] #禁止超级用户远程登录 默认禁止
... Success!
Remove test database and access to it? [Y/n] #默认删除测试数据库
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success
Reload privilege tables now? [Y/n] #立即重新加载权限列表
... Success!“
超级用户输入密码登录数据库
拒绝外部通过网络访问数据库
查看对外开放接口
[root@server ~]# netstat -antlupe | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 27 123519 15477/mysqld
修改配置文件跳过所有关于网络的设置
[root@server ~]# vim /etc/my.cnf
[root@server ~]# systemctl restart mariadb.service
[root@server ~]# netstat -antlupe | grep mysql 端口关闭
二 数据库的管理
1.数据库的查询
SHOW DATABASES ##查询库信息
- 需要注意的是,结尾都是要有 “;” 符号的
USE DATABASENAME ##进入某一库
SHOW TABLES; ##查询库中的所有表
SELECT * FROM TABLES ##查看某一表的所有信息
SELECT Host FROM user WHERE User=‘root’; ## 按条件查询表中信息
2 数据库的建立
CREATE DATABASE westos; ## 新建一个库名称为westos
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| ultrax |
| westos |
+--------------------+
5 rows in set (0.00 sec)
MariaDB [westos]> USE westos;
Database changed
CREATE TABLE linux ( #在库中创建一个新的表
-> username varchar(10) not null, #表中包含的字段以及字段的要求
-> password varchar(50) not null
-> );
MariaDB [westos]> DESC linux; 查看表的结构
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(10) | NO | | NULL | |
| password | varchar(50) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.02 sec)
MariaDB [westos]> INSERT INTO linux VALUES('lc','123'); 给表中插入数据
Query OK, 1 row affected (0.01 sec)
MariaDB [westos]> INSERT INTO linux VALUES('tom','123');
Query OK, 1 row affected (0.01 sec)
MariaDB [westos]> SELECT * FROM linux; 查看linux表的全部信息
+----------+----------+
| username | password |
+----------+----------+
| lc | 123 |
| tom | 123 |
+----------+----------+
2 rows in set (0.00 sec)
3.数据库的更改
ALTER TABLE linux RENAME redhat; ##更改数据表格的名字
MariaDB [westos]> SHOW TABLES; 展示原本的表格名称
+------------------+
| Tables_in_westos |
+------------------+
| linux |
+------------------+
1 row in set (0.00 sec)
MariaDB [westos]> ALTER TABLE linux RENAME redhat; 更改数据表格名称
Query OK, 0 rows affected (0.01 sec)
MariaDB [westos]> SHOW TABLES; 展示数据表格新的名称
+------------------+
| Tables_in_westos |
+------------------+
| redhat |
+------------------+
1 row in set (0.00 sec)
ALTER TABLE redhat ADD class varchar(20) not null;##给表中添加一个字段,默认在最后添加
MariaDB [westos]> ALTER TABLE redhat ADD class varchar(20) not null; 添加一个新的字段;
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
MariaDB [westos]> SELECT * FROM redhat; 查看建立成功的字段
+----------+----------+-------+
| username | password | class |
+----------+----------+-------+
| lc | 123 | |
| tom | 123 | |
+----------+----------+-------+
2 rows in set (0.00 sec)
MariaDB [westos]> SELECT * FROM redhat;
+----------+----------+
| username | password |
+----------+----------+
| lc | 123 |
| tom | 123 |
+----------+----------+
2 rows in set (0.00 sec)
ALTER TABLE redhat DROP class; ##移除表格中某一字段
MariaDB [westos]> ALTER TABLE redhat DROP class; 需要注意的是数据库里边的删除是 drop
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
MariaDB [westos]> SELECT * FROM redhat; 查看已经移除成功
+----------+----------+
| username | password |
+----------+----------+
| lc | 123 |
| tom | 123 |
+----------+----------+
2 rows in set (0.00 sec)
ALTER TABLE redhat ADD class varchar(20) not null AFTER ##在username后面添加一字段
MariaDB [westos]> SELECT * FROM redhat;
+----------+----------+
| username | password |
+----------+----------+
| lc | 123 |
| tom | 123 |
+----------+----------+
2 rows in set (0.00 sec)
MariaDB [westos]> ALTER TABLE redhat ADD class varchar(20)not null AFTER username; 在username后边加入字段
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
MariaDB [westos]> SELECT * FROM redhat;
+----------+-------+----------+
| username | class | password |
+----------+-------+----------+
| lc | | 123 |
| tom | | 123 |
+----------+-------+----------+
2 rows in set (0.00 sec)
UPDATE redhat set password=‘456’ ##更改某一字段
MariaDB [westos]> UPDATE redhat set password='456'
-> ;
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2 Changed: 2 Warnings: 0
MariaDB [westos]> SELECT * FROM redhat; 更改密码为456
+----------+-------+----------+
| username | class | password |
+----------+-------+----------+
| lc | | 456 |
| tom | | 456 |
+----------+-------+----------+
2 rows in set (0.00 sec)
UPDATE redhat set password=‘456’ WHERE username=‘lc’ ##更改某一具体字段的某一内容
MariaDB [westos]> UPDATE redhat set password='456' WHERE username='lc';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [westos]> SELECT * FROM redhat; 查看更改好的字段
+----------+-------+----------+
| username | class | password |
+----------+-------+----------+
| lc | | 456 |
| tom | | 123 |
+----------+-------+----------+
2 rows in set (0.00 sec)
4.数据库的删除
DELETE FROM redhat WHERE username=‘lc’; ##删除某一字段
MariaDB [westos]> SELECT * FROM redhat;
+----------+-------+----------+
| username | class | password |
+----------+-------+----------+
| lc | | 456 |
| tom | | 123 |
+----------+-------+----------+
2 rows in set (0.00 sec)
MariaDB [westos]> DELETE FROM redhat WHERE username='lc'; 删除某一个特定的字段
Query OK, 1 row affected (0.01 sec)
MariaDB [westos]> SELECT * FROM redhat;
+----------+-------+----------+
| username | class | password |
+----------+-------+----------+
| tom | | 123 |
+----------+-------+----------+
1 row in set (0.00 sec)
DROP TABLE redhat; ##删除表格
MariaDB [westos]> SHOW TABLES;
+------------------+
| Tables_in_westos |
+------------------+
| redhat |
+------------------+
1 row in set (0.00 sec)
MariaDB [westos]> DROP TABLE redhat;
Query OK, 0 rows affected (0.01 sec)
MariaDB [westos]> SHOW TABLES;
Empty set (0.00 sec)
DROP DATABASE westos; ##删除数据库
MariaDB [westos]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| ultrax |
| westos |
+--------------------+
5 rows in set (0.00 sec)
MariaDB [westos]> DROP DATABASE westos;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| ultrax |
+--------------------+
4 rows in set (0.00 sec)
三.用户的授权与权力回收
1.用户的授权
新建立的用户,虽然可以登陆该数据库,但是对数据库没有任何权限,看不到内容。
GRANT SELECT,INSERT ON lala. * TO TOTO@localhost; # 进行授权
SHOW GRANTS FOR lc@localhost; #显示授给的权利*
REVOKE INSERT ON lala.* FROM TOTO@localhost; #权力回收**
DROP USER TOTO@localhost; #删除用户
PLUSH PRIVILEGES; #刷新
4、数据库的备份
mysqldump -uroot -predhat lala > /opt/lala.sql #将库lala备份到/opt/lala.sql 文件
mysqldump -uroot -predhat lala --no-date # 对指定的库不备份数据只备份结构
mysqldump -uroot -predhat --all-database # 对所有的库进行备份
mysqldump -uroot -predhat --all-database --no-data # 对所有的库不备份数据只备份结构
然后删除数据库lala。
恢复方式1:
mysql -uroot -predhat -e “CREATE DATABASE lala;” #在数据库中先新建一个库
mysql -uroot -predhat lala < /opt/lala.sql #再将备份的数据放进新建的库中
恢复方式2:
vim /opt/lala.sql #直接打开备份的库文件
CREATE DATABASE lala;
USE lala;