与mysql服务器结合在一起进行开发或与mysql数据库协同工作的方法很多,你可使用的最基本的界面程序就是mysql客户机。使用改程序,你可以从命令行界面环境下与服务器进行交互操作。但你的服务器上必须已经安装了mysql,那么就可以使用mysql客户机了。
登陆到mysql命令,在shell提示符中输入:
mysql -h host -u user -p
然后输入用户的密码即可
C:\Users\Administrator>mysql -h localhost -u summer -p
Enter password: ***
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 5.0.87-community-nt MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
如果你是从本地登陆至mysql(即从服务器本身登陆),或者使用安全的网络连接工具(SSH)远程登录至mysql,则可以省略主机参数-h host 。因为默认主机就是localhost.
在其他环境下,你输入的命令必须经过网络才能到达服务器,此时需要将host参数替换成主机名,此名可以解析成IP地址,或将host替换从mysql服务器的实际IP地址,同时还要用mysql用户名替换user参数。
1、查看数据库所用用户及对应的数据库服务器:
mysql> select user, host
-> from
-> mysql.user;
+------+-----------+
| user | host |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec)
2、修改用户密码命令:
mysql> set password for 'root'@'localhost'=password('12345');
Query OK, 0 rows affected (0.00 sec)
3、创建新用户命令:
创建一个用户名为summer,密码为123的新用户。
mysql> create user 'summer'@'localhost' identified by '123';
Query OK, 0 rows affected (0.03 sec)
mysql> select user, host
-> from
-> mysql.user;
+--------+-----------+
| user | host |
+--------+-----------+
| root | localhost |
| summer | localhost |
+--------+-----------+
2 rows in set (0.00 sec)
4、删除用户命令:
mysql> delete from mysql.user where user='summer';
Query OK, 1 row affected (0.00 sec)
mysql> delete from mysql.db where user='summer';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from mysql.user;
+------+-----------+
| user | host |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec)
前2条语句从mysql数据库的user表和bd表中删除了summer用户,最后一行语句令服务器根据前面的修改重新读取授权
5、创建新用户,并授予指定权限(all为所有权限)给新用户
mysql> create user 'summer'@'localhost' identified by '123';
Query OK, 0 rows affected (0.01 sec)
mysql> grant select on *.* to 'summer'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> greant select on *.* to 'andy'@'localhost' identified by '123';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'grean
t select on *.* to 'andy'@'localhost' identified by '123'' at line 1
mysql> grant select on *.* to 'andy'@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from mysql.user;
+--------+-----------+
| user | host |
+--------+-----------+
| andy | localhost |
| root | localhost |
| summer | localhost |
+--------+-----------+
3 rows in set (0.00 sec)
先创建用户再授权和创建用户并授权。
如果想授予更多的权限,可在select后添加其他权限,各个权限用逗号隔开,如果在grant后用all表示授予所用的权限给用户。
其中*.*表示该用户对所用的数据库都用select权限,如果想限制用户的数据库数量,怎样用呢?不太清楚,知道的大神告诉一声
6、创建数据库:
mysql> create database bookstore;
该用户必须拥有创建和修改服务器上数据库所必需的权限。
在windows系统中,对大小写并不敏感,但在linux系统中对大小写是敏感的。
以windows为例,sql语句中比较好的书写规范是:在语句中的命令及保留字都采用大写(这并不是必须的),而数据库名、表名、字段名等采用小写。
一条完整的sql语句可能不止一行,直到输入分号后,客户机程序才将sql语句发送给服务器解析执行。
7、启动已存在的数据库
USE bookstore;
启动数据库后,我们才能对该数据库执行其他操作:创建表,索引,视图等。
8、创建数据库表,并查看表结构
mysql> create table books(
-> book_id int,
-> title varchar(50),
-> author varchar(50) );
Query OK, 0 rows affected (0.43 sec)
mysql> describe books;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| book_id | int(11) | YES | | NULL | |
| title | varchar(50) | YES | | NULL | |
| author | varchar(50) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
3 rows in set (0.04 sec)
create table 表名(字段1 数据类型,字段2,数据类型)
describe 表名,查看表结构,也可以用desc 表名。
9、修改数据库表
mysql> alter table books
-> change column book_id book_id int auto_increment primary key,
-> change column author author_id int,
-> add column description text,
-> add column genre enum('novel','poetry','drama'),
-> add column publisher_id int,
-> add column pub_year varchar(4),
-> add column inbn varchar(20);
Query OK, 0 rows affected (0.43 sec)
Records: 0 Duplicates: 0 Warnings: 0
alter table 表名
修改字段:change column 原字段名 新字段名(即使和原字段相同也要写上)字段类型 【约束条件】auto_increment(任意一个唯一的值分配给表中的每条记录) 、primary key(将字段设置为主键,提高数据检索速度)、 not null、 null....
添加字段:add column 字段名 字段类型
10、显示所用数据库及当前使用的数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| acesys |
| bookstore |
| mysql |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> select database();
+------------+
| database() |
+------------+
| bookstore |
+------------+
1 row in set (0.00 sec)
mysql数据库包含用户权限和信息
est数据库为用户提供一个测试数据库添加或运行sql语句的场所。
11、显示当前用户
mysql> select user();
+------------------+
| user() |
+------------------+
| summer@localhost |
+------------------+
1 row in set (0.01 sec)
12、显示当前数据库的所用表
mysql> show tables;
+---------------------+
| Tables_in_bookstore |
+---------------------+
| authors |
| books |
+---------------------+
2 rows in set (0.00 sec)
完整语句是:show tables from 数据库名;
在开启数据库时,省略from 数据库,默认使用当前数据库。
13、向数据库的表中添加记录
mysql> insert into authors
-> (author_last,author_first,country)
-> values('Greene','Graham','United Kingdom');
Query OK, 1 row affected (0.04 sec)
如同上面列出的那样,标准的insert语法要为每一个插入值指定相应的列,如果想为所用的列添加值,则不需要指定列名,但被添加的数据一定要按表中的列的顺序排序。
该表中的author_id并没有填入values值,但由于author_id采用auto_increment约束,所以自动递增。
下一集预告:mysql最强大的功能,查询语句select.