很少有写关于数据库的文章,这里对MySQL数据库的基础进行一个总结。 这里所说的MySQL其实是MariaDB,给不知道的同学解释一下,MariaDB是MySQL数据库的自由开源分支,使用上基本与mysql一样,自从mysql被Oracle收购后,mysql前途未卜,所以建议使用MariaDB。

安装mysql数据库

  • 直接yum安装(推荐),不建议使用编译安装(特殊要求除外)。
yum install -y mariadb-server mariadb-client
  • 二进制安装
# useradd  -r  mysql            # 创建mysql用户
# tar xf  mariadb-VERSION.tar.xz  -C  /usr/local
# cd /usr/local
# ln  -sv  mariadb-VERSION  mysql
# cd  /usr/local/mysql
# chown  -R  root:mysql  ./*
# mkdir /mydata/data -pv        # 创建数据目录
# chown -R mysql.mysql /mydata/data/
# scripts/mysql_install_db  --user=mysql  -datadir=/mydata/data
# cp  support-files/mysql.server   /etc/init.d/mysqld
# chkconfig   --add  mysqld
# cp  support-files/my-large.cnf  /etc/my.cnf       # 创建配置文件

基本配置

默认配置文件:/etc/my.cnf 默认数据目录:/var/lib/mysql/

修改root密码

默认root密码为空,这是非常不安全的。通过mysqladmin -uroot password命令可直接创建密码。 如果是root密码忘记,需要修改。则需要进入安全模式。

# 停止mysql
# systemctl stop mariadb
# 进入安全模式
# mysqld_safe --skip-grant-tables     
# 重新开一个shell,然后直接用root登录,无需密码
# mysql -uroot 
# 给root重置密码
> grant all privileges on *.* to 'root'@'localhost' identified by 'password' with grant option;
> flush privileges;  
# 重启mysql服务
# systemctl restart mariadb

创建用户

创建test用户,密码为1234 '%' 表示任意IP,'localhost'表示只允许本地登录

  • 本地登录 CREATE USER 'test'@'localhost' IDENTIFIED BY '1234';
  • 远程登录 CREATE USER 'test'@'%' IDENTIFIED BY '1234';

用户授权

# 请注意,默认root用户只能本地登录,如果需要远程登录,就需要重新授权。
# 带上WITH GRANT OPTION,root用户就可以权限传递给其他用户。
> grant all privileges on *.* TO 'root'@'%' identified by 'xxxx' WITH GRANT OPTION;
> flush privileges; 
# 所有权限
> grant all privileges on *.* to 'test'@'localhost' identified by '1234'; 
> flush privileges; 
# 部分权限
> grant select,delete,update,create,drop on . to test@'%' identified by '1234';
> flush privileges;

删除用户

> Delete FROM user Where User='test' and Host='localhost';
> flush privileges;
# 删除用户的数据库
> drop database testDB;
# 删除账户及权限:
> drop user 用户名@'%';

基本操作

  • 列出所有数据库 show databases;
  • 切换数据库 use databases;
  • 列出所有表 show tables
  • 显示数据表结构 describe table
  • 删除数据库和表 drop database 数据库名; drop table 数据表名;