MySQL数据库管理,mysql数据库
mariadb 简介
MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可 MariaDB 的目的是完全兼容MySQL ,包括 API 和命令行,是 MySQL 的代替品MariaDB 由 MySQL 的创始人 Michael Widenius (英语:Michael Widenius )主导开发,他早前曾以 10 亿美元的价格,将自己创建的公司 MySQL AB 卖给了 SUN ,此后,随着SUN 被甲骨文收购, MySQL 的所有权也落入 Oracle 的手中MariaDB 名称来自 Michael Widenius 的女儿 Maria 的名字
mysql_secure_installation 是 mariadb 自带的安全初始化脚本
1.安装 Mariadb
yum install mariadb-server -y #安装数据库
systemctl start mariadb #打开数据库
mysql #可以登陆且无需密码
netstat -antlpe | grep mysql #查看mysql网络接口状态
systemctl stop firewalld #关闭火墙
vim /etc/my.cnf
######
systemctl restart mariadb #重启数据库
netstat -antlpe | grep mysql #再查看时无网络接口
mysql_secure_installation #安全设置,并设定root用户的密码
mysql #登录失败,匿名用户不能登陆
mysql -uroot -pwestos #以root用户的身份密码登陆数据库,westos为密码
2.数据库的管理
用命令的方式管理数据库:
(1)查询 SQL
SHOW DATABASES; #显示所有数据库
USE database_name; #使用某个数据库
SHOW tables; #显示所有表
DESCRIBE table_name; #显示某个表的数据结构
SELECT * FROM table_name; #显示某个表的数据信息
实验:
mysql -uroot -p #root用户密码登陆
MariaDB [(none)]> SHOW DATABASES; #显示所有数据库
MariaDB [(none)]> USE mysql #使用mysql数据库
MariaDB [mysql]> SHOW TABLES; #显示所有mysql数据库中的所有表
MariaDB [mysql]> DESCRIBE time_zone_name; #查看mysql数据库中time_zone_name表的数据结构
MariaDB [mysql]> SELECT * FROM user; #显示user表中的所有数据信息
MariaDB [mysql]> SELECT User,Host,Password FROM user; #显示user表中User,Host,Password 字段的数据信息
(2)数据库的建立
CREATE DATABASE database_name; #创建数据库
CREATE TABLE table_name (name VARCHAR(20), #创建表的结构及其属性
sex CHAR(1));
INSERT INTO table_name VALUES ('WESTOS','M'); #给某个表插入数据
实验:
mysql -uroot -pwestos #root用户密码登陆
MariaDB [(none)]> SHOW DATABASES; #显示所有数据库
MariaDB [(none)]> CREATE DATABASE westos; #创建westos数据库
MariaDB [(none)]> SHOW DATABASES; #查看是否建立成功
MariaDB [westos]> USE westos; #使用westos数据库
MariaDB [westos]> SHOW TABLES; #显示westos数据库里的表
MariaDB [westos]> CREATE TABLE linux( #在westos数据库里创建linux表
-> username varchar(6) not null, 并指定表的数据结构
-> passward varchar(20) not null);
MariaDB [westos]> SHOW TABLES; #查看linux表是否创建成功
MariaDB [westos]> DESC linux; #显示linux表的数据结构
MariaDB [westos]> INSERT INTO linux values ('lee','123'); #给linux表里插入数据
MariaDB [westos]> SELECT * FROM linux; #查看数据信息是否插入成功
(3)数据库的更新
1)表的结构的更改
ALTER TABLE linux RENAME messages; #更改表名
ALTER TABLE linux ADD age varchar(50); #给linux表添加age字段(默认添加到最后边)
ALTER TABLE linux ADD age varchar(50) AFTER username; #给linux表添加age字段(添加到username后边)
ALTER TABLE linux DROP age; #删除age字段
实验:
MariaDB [westos]> SHOW TABLES;
MariaDB [westos]> ALTER TABLE linux RENAME messages; #更改表名
MariaDB [westos]> SHOW TABLES;
MariaDB [westos]> ALTER TABLE messages RENAME linux; #还原
MariaDB [westos]> SHOW TABLES;
MariaDB [westos]> DESC linux; #查看linux表的数据结构
MariaDB [westos]> ALTER TABLE linux ADD age varchar(50); #添加字段
MariaDB [westos]> DESC linux;
MariaDB [westos]> ALTER TABLE linux DROP age; #添加字段,默认在最后边
MariaDB [westos]> DESC linux;
MariaDB [westos]> ALTER TABLE linux ADD age varchar(50) AFTER username; #指定位置处添加字段(在username之前) 注意:它不能插在最前边,则否会出现错乱
MariaDB [westos]> DESC linux;
2)表的数据的更改
UPDATE linux SET passward='111' WHERE username='lee'; #将linux表中username为lee的passward更改为111
DELETE FROM linux WHERE username='lee'; #删除linux表中username为lee的数据
DROP TABLE linux; #删除linux表
DROP DATABASE westos; #删除westos数据库
实验:
MariaDB [westos]> SELECT * FROM linux; #查看linux表的数据信息
MariaDB [westos]> UPDATE linux SET passward='111' WHERE username='lee'; #更改表的数据
MariaDB [westos]> SELECT * FROM linux;
MariaDB [westos]> DELETE FROM linux WHERE username='lee'; #删除表的某个数据
MariaDB [westos]> SELECT * FROM linux;
MariaDB [westos]> DROP TABLE linux; #删除linux表
MariaDB [westos]> SHOW TABLES;
MariaDB [westos]> DROP DATABASE westos; #删除数据库
用网页的形式管理数据库:
yum install httpd php -y #安装 Apache
yum install php-mysql.x86_64 -y
systemctl start httpd
systemctl stop firewalld
##下载phpMyAdmin-3.4.0-all-languages.tar.bz2
[root@localhost ~]#cd /var/www/html/
[root@localhost ~]#ls
[root@localhost ~]#lftp 172.25.254.250
lftp 172.25.254.250:/> cd pub/docs/software/
cd ok, cwd=/pub/docs/software
lftp 172.25.254.250:/pub/docs/software> ls
-rwxr-xr-x 1 1000 1000 3086326 Dec 25 2013 phpMyAdmin-2.11.3-all-languages.tar.bz2
-rwxr-xr-x 1 1000 1000 4548030 Dec 25 2013 phpMyAdmin-3.4.0-all-languages.tar.bz2
-rw-rw-r-- 1 1000 1000 7203314 May 26 03:24 phpMyAdmin-4.0.10.20-all-languages.tar.gz
-rw-rw-r-- 1 1000 1000 9561944 May 26 03:08 phpMyAdmin-4.8.1-all-languages.tar.gz
-rw-rw-r-- 1 1000 1000 2713600 Jun 07 2015 taobao.tar
-rwxr-xr-x 1 1000 1000 52387876 Feb 01 2015 thunderbird-31.2.0-1.el7.x86_64.rpm
-rwxr-xr-x 1 1000 1000 36902724 Feb 01 2015 thunderbird-31.4.0.tar.bz2
lftp 172.25.254.250:/pub/docs/software> get phpMyAdmin-3.4.0-all-languages.tar.bz2 #下载3.4版本的
4548030 bytes transferred
lftp 172.25.254.250:/pub/docs/software> quit
[root@dns-servser html]#ls
phpMyAdmin-3.4.0-all-languages.tar.bz2
若用u盘已经将3.4版本拷贝实验该怎么做:
在真机中
在虚拟机中
tar jxf phpMyAdmin-3.4.0-all- #解压 languages.tar.bz2
ls
rm -fr *.bz2 #删除安装包
ls
mv phpMyAdmin-3.4.0-all-languages/ mysqlamdin #重命名
ls
cd mysqlamdin
cp config.sample.inc.php config.inc.php
测试:
在firefox里输入http://172.25.254.130/mysqlamdin/ 便可打开网页管理数据库的用户登陆界面
3.数据库用户的管理
建立用户:
CREATE USER student@'localhost' identified by 'studentt'; #创建本地用户student,密码为studentt
CREATE USER lee@'%' identified by 'redhat'; #创建远程用户lee密码为redhat
用户授权:
SHOW GRANTS FOR wxh@localhost; #查看用户的权限
GRANT SELECT,UPDATE,INSERT,DELETE on mariadb.* to wxh@localhost; #给mariadb数据库student用户 查询,更新,插入,删除 的权限
#mariabd表示某个数据库 wxh表示mariabd数据库中的某个用户
例如:
GRANT SELECT on westos.* to student@localhost; #给westos数据库的student用户查询权限
GRANT UPDATE on westos.* to student@localhost; #给westos数据库的student用户更新权限
GRANT INSERT on westos.* to student@localhost; #给westos数据库的student用户插入权限
GRANT DELETE on westos.* to student@localhost; #给westos数据库的student用户权限删除
撤销用户权限:
REVOKE SELECT,UPDATE,INSERT,DELETE on mariadb.* from wxh@localhost; #撤销用户查询,更新,插入,删除的权限
重载授权表:
FLUSH PRIVILEGES;
删除用户:
DROP USER wxh@localhost;
实验:
MariaDB [(none)]> SELECT User FROM mysql.user; #查看数据库的用户
MariaDB [(none)]> CREATE USER student@'localhost' identified by 'studentt';
#建立本地用户student(密码为studentt)
MariaDB [(none)]> SELECT User FROM mysql.user; #查看用户是否建立成功
MariaDB [(none)]> GRANT SELECT on westos.* to student@localhost; #给查询权限
MariaDB [(none)]> SHOW GRANTS FOR student@localhost; #查看权限
MariaDB [(none)]> GRANT UPDATE on westos.* to student@localhost; #给更新权限
MariaDB [(none)]> SHOW GRANTS FOR student@localhost;
MariaDB [(none)]> GRANT INSERT,DELETE on westos.* to student@localhost; #给插入,删除权限
MariaDB [(none)]> SHOW GRANTS FOR student@localhost; #查看权限
MariaDB [(none)]> REVOKE SELECT,UPDATE,INSERT on westos.* from student@localhost; #撤销查询,更新,插入权限
MariaDB [(none)]> SHOW GRANTS FOR student@localhost;
MariaDB [(none)]> SELECT User FROM mysql.user; #查看用户
MariaDB [(none)]> DROP USER student@localhost; #删除student用户
MariaDB [(none)]> SELECT User FROM mysql.user; #查看是否删除成功
超级用户密码忘记,如何处理:
systemctl stop mariadb #关闭数据库
mysqld_safe --skip-grant-tables & #跳过授权表, &表示打入后台
mysql #无密码登陆
MariaDB [(none)]> update mysql.user set Password=password('123') where User='root'; #更改root用户的密码为123 (更改方式为加密更改)
MariaDB [(none)]> select * from mysql.user;
MariaDB [(none)]> quit
fg #将刚打入后台的程序调回前台
killall -9 mysqld_safe #结束mysql的所有进程
ps aux | grep mysql #过滤mysql的所有进程,可查看到3660进程正在运行
kill -9 3550 #结束正在运行的8168进程
ps aux | grep mysql #再次过滤,此时无进程运行
systemctl start mariadb #打开数据库
mysql -uroot -p123 #登陆成功,说明密码修改成功
4.数据库的备份
mysqldump -uroot -predhat --all-database > /mnt/westos.all #备份所有数据库资料
mysqldump -uroot -predhat --all-database --no-data > /mnt/westos.err #只备份数据库的数据结构,不备份数据库的数据信息
mysqldump -uroot -predhat westos > /mnt/westos.sql #备份westos数据库资料 到/mnt/westos.sql里
实验:
mysql -uroot -p123 -e "CREATE DATABASE westos;"
mysql -uroot -p123 -e "show databases;" #显示所有数据库
mysqladmin -uroot -p123 password 'lee' #将root用户密码123修改为lee
mysql -uroot -p123 #登陆不上
mysql -uroot -plee #可以登陆,说明更改成功
mysqldump -uroot -plee westos > /mnt/westos.sql #备份
恢复数据库的两种方式:
方法一
mysql -uroot -plee -e "drop database westos;" #删除westos数据库
mysql -uroot -plee -e "show databases;"
ls /mnt/
mysql -uroot -plee westos < /mnt/westos.sql #恢复westos数据库失败
vim /mnt/westos.sql
###########
mysql -uroot -plee < /mnt/westos.sql #恢复成功
mysql -uroot -plee -e "show databases;"
mysql -uroot -plee -e "select * from westos.linux;"
方法二
mysql -uroot -plee -e "drop database westos;"
mysql -uroot -plee -e "show databases;"
vim /mnt/westos.sql
##############
mysql -uroot -plee -e "CREATE DATABASE westos;" #创建westos数据库
mysql -uroot -plee < /mnt/westos.sql #恢复westos数据库
mysql -uroot -plee -e "show databases;"