经过安装后的初始化过程,MySQL数据库的默认管理员用户名为"root",密码为空。
[root@yang ~]# mysql -u root //"-u"选项用于指定认证用户
有密码的情况下,使用"-p"选项来进行密码校验。
[root@yang ~]# mysql -u root -p
Enter password:
验证成功以后将会进入提示符为"MySQL>"的数据库操作环境,用户可以输入各种操作语句对数据库进行管理。每条MySQL操作语句以分号";"表示结束,输入时可以不区分大小写。
例如,以用户名root登录到"mysql>"环境后,执行"status;"语句可以查看当前数据库服务的基本信息。
[root@yang ~]# mysql -u root
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.6.36, for Linux (x86_64) using EditLine wrapper
Connection id: 2
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.36 Source distribution
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql.sock
Uptime: 8 min 13 sec
Threads: 1 Questions: 7 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 60 Queries per second avg: 0.014
--------------
在"mysql>"操作环境中,执行"exit"或"ouit"命令可以退出mysql命令工具,返回原来的shell环境。
mysql> exit
Bye
[root@yang ~]#
show databases 语句:用于查看当前MySQL服务器中包含的库,默认包含(test、mysql、information_schema、performance_schema)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
show tables 语句:用于查看当前所在的库中包含的表
use语句:切换到所使用的库
mysql> use bdqn
Database changed
mysql> show tables;
+----------------+
| Tables_in_bdqn |
+----------------+
| benet |
+----------------+
1 row in set (0.00 sec)
MySQL数据库的数据文件存放在/usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为".frm"、".myd"、".myi"
[root@yang bdqn]# cd /usr/local/mysql/data/bdqn/
[root@yang bdqn]# ls
benet.frm benet.ibd db.opt
describe 语句:用于显示表的机构,即组成表的各字段(列)的信息。
mysql> describe bdqn.benet;
+--------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| user | char(15) | NO | | NULL | |
| passwd | char(18) | NO | | NULL | |
+--------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
create database 语句:用于创建一个新的库,需指定数据库名称作为参数。
mysql> create database auth; //创建一个名为auth的数据库
mysql> show databases; //查看包含哪些数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| auth |
| bdqn |
| mysql |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.00 sec)
刚创建的数据库是空的,其中不包含任何表,在/usr/local/mysql/data目录下会自动生成一个与新建的库名相同的文件夹。
[root@yang bdqn]# cd /usr/local/mysql/data/
[root@yang data]# ls
auth auto.cnf bdqn ibdata1 ib_logfile0 ib_logfile1 localhost.localdomain.err mysql performance_schema test yang.err yang.pid
create table 语句:用于在当前库中创建新的表。
mysql> create table users (user_name char(16) not null, user_passwd char(48) default '', primary key (user_name));
mysql> show tables;
+----------------+
| Tables_in_auth |
+----------------+
| users |
+----------------+
1 row in set (0.00 sec)
drop table 语句:用于删除库中的表。
mysql> drop table auth.users;
Query OK, 0 rows affected (0.00 sec)
drop database 语句:用于删除指定的库。
mysql> drop database auth;
Query OK, 0 rows affected (0.00 sec)
insert into 语句:用于向表中插入新的数据记录。password('123456')表示将密码加密
mysql> insert into auth.users (user_name,user_passwd) values('lisi',password('123456'));
Query OK, 1 row affected (0.00 sec)
mysql> select * from auth.users; //查看数据表中的内容
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| lisi | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)
grant 语句:专门用来设置数据库用户的访问权限,当指定的用户名不存在时,grant语句将会创建新的用户,否则,grant语句用于修改用户信息
grant 权限列表 on 库名.表名 to 用户名@来源地址 [ identified by '密码' ]
权限列表:用于授予权限。select、insert、update,使用"all"表示所有权限
库名.表名:用于指定授权的对象,"auth.*"表示auth数据库中的所有表
用户名@来源地址:用于指定访问的对象。可以是IP地址、域名。也可以是"%"通配符,"%.bdqn.com"、"192.168.1.%"表示某个区域或网段内的所有地址
identified by:用于设置密码。若省略则用户的密码为空
创建一个名为xiaoqi的数据库用户,允许本地访问数据库auth下的所有表,密码为123
mysql> grant select on auth.* to 'xiaoqi'@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)
//使用xiaoqi数据库用户登录
[root@yang ~]# mysql -u xiaoqi -p
Enter password:
//验证权限
mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| lisi | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)
//访问其他数据库则没有权限
mysql> select * from mysql.user;
ERROR 1142 (42000): SELECT command denied to user 'xiaoqi'@'localhost' for table 'user'
show grants 语句:专门用于查看数据库用户的授权信息,通过for可以指定查看的用户
revoke 语句:用于撤销指定用户的数据库权限。撤销后的用户仍然可以连接到mysql服务器,但将被禁止执行对应的数据库操作
mysql> revoke all on auth.* from 'xiaoqi'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for 'xiaoqi'@'localhost';
+---------------------------------------------------------------------------------------------------------------+
| Grants for xiaoqi@localhost |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'xiaoqi'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
+---------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
1、为MySQL数据库的root用户设置密码,删除用户名、密码为空的用户记录
2、新建名为"bdqn"的库,授权用户rundb从本机访问,具有所有操作权限
3、以rundb用户登录,在bdqn库中创建stuinfo表,并录入如下数据
1、更改数据库mysql中的user表,将root的密码更改为123,并刷新用户授权信息
mysql> use mysql
Database changed
mysql> update mysql.user set password=password('123') where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> flush privileges; //刷新用户授权信息
Query OK, 0 rows affected (0.00 sec)
2、创建一个名为bdqn的数据库,并添加一个rundb数据库用户,授予所有权限以本机访问。
mysql> create database bdqn;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on bdqn.* to 'rundb'@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)
3、在bdqn数据库中新建stuinfo表,并录入数据。
mysql> create table stuinfo
-> (姓名 nvarchar(10) not null primary key,
-> 性别 nvarchar(2) not null,
-> 年龄 int not null,
-> 联系电话 bigint not null,
-> Email地址 nvarchar(50)
-> );
mysql> insert into stuinfo (姓名,性别,年龄,联系电话,Email地址) values('张无忌','男','19','17512345678','[email protected]');
mysql> insert into stuinfo (姓名,性别,年龄,联系电话,Email地址)
-> values('白居易','男','24','17587654321','[email protected]');
mysql> insert into stuinfo (姓名,性别,年龄,联系电话,Email地址)
-> values('蓝采和','女','21','17555201314','[email protected]');
mysql> select * from stuinfo;
+-----------+--------+--------+--------------+-------------------------+
| 姓名 | 性别 | 年龄 | 联系电话 | Email地址 |
+-----------+--------+--------+--------------+-------------------------+
| 张无忌 | 男 | 19 | 17512345678 | [email protected] |
| 白居易 | 男 | 24 | 17587654321 | [email protected] |
| 蓝采和 | 女 | 21 | 17555201314 | [email protected] |
+-----------+--------+--------+--------------+-------------------------+