4. 运行和关闭MySQL服务器
首先检查MySQL服务器正在运行与否。在资源管理器查看有没有mysqld的进程,如果MySQL正在运行,那么会看到列出来的 mysqld 进程。如果服务器没有运行,那么可以使用下面的命令来启动它:
D:softwaremysql-5.6.25-winx64in>mysqld
2015-07-30 22:59:20 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-07-30 22:59:20 0 [Note] mysqld (mysqld 5.6.25) starting as process 3028 ...
现在,如果想关闭已经运行的 MySQL 服务器,那么可以使用下面的命令做到这一点:
D:softwaremysql-5.6.25-winx64in>mysqladmin -u root -p shutdown
Enter password: ******
5、设置MySQL用户帐户
添加用户方式一:
要添加一个新用户到 MySQL,只需要在数据库中的新记录添加到用户表:mysql.user
下面是添加新用户:yiibai 的例子,给定 SELECT, INSERT 和 UPDATE权限并使用密码:yiibai123; SQL 查询是:
D:softwaremysql-5.6.25-winx64in> mysql -u root -p
Enter password:
mysql> use mysql;
Database changed
mysql> INSERT INTO user
(host, user, password,
select_priv, insert_priv, update_priv)
VALUES ('localhost', 'yiibai',
PASSWORD('123456'), 'Y', 'Y', 'Y');
Query OK, 1 row affected (0.20 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 1 row affected (0.01 sec)
mysql> SELECT host, user, password FROM user WHERE user = 'yiibai';
+-----------+---------+------------------+
| host | user | password |
+-----------+---------+------------------+
| localhost | yiibai | *59A8740AAC5DBCB2907F38891BE42957F699CB77 |
+-----------+---------+------------------+
1 row in set (0.00 sec)
当要添加一个新用户,记得要PASSWORD()函数加密MySQL新使用的密码。正如在上面的例子中看到密码为mypass,进行加密后为:*59A8740AAC5DBCB2907F38891BE42957F699CB77
注意最后要使用 FLUSH PRIVILEGES 语句。 这告诉服务器重新加载授权表。如果不使用它,那么将无法使用新的用户帐户连接到MySQL服务器,至少在服务器重新启动后才可以。
也可以通过在用户设置表以下几列的值为'Y',指定给新用户的权限,在执行INSERT查询后,也可以在以后使用UPDATE查询更新它们:
• Select_priv
• Insert_priv
• Update_priv
• Delete_priv
• Create_priv
• Drop_priv
• Reload_priv
• Shutdown_priv
• Process_priv
• File_priv
• Grant_priv
• References_priv
• Index_priv
• Alter_priv
添加用户的方式二:
添加用户帐户的另一种方式是通过使用GRANT SQL命令; 下面的例子将增加用户zara 并使用密码zara123 为特定数据库:tutorials
D:softwaremysql-5.6.25-winx64in> mysql -u root -p password;
Enter password:
mysql> use mysql;
Database changed
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON tutorials.*
-> TO 'yiibai'@'localhost'
-> IDENTIFIED BY '123456';
这也将创建一条记录在MySQL数据库中的表: user
注意: MySQL不会终止命令,直到给一个分号(;)在SQL命令的结尾。
6.创建一个数据库
下面我们来创建一个数据库:tutorials,使用以下命令:
D:softwaremysql-5.6.25-winx64in> mysql -u root -p password;
Enter password:
mysql>create database tutorials default character set utf8 collate utf8_general_ci;
PS:设置默认字符集utf8, 排序方式使用utf8_general_ci;
添加用户帐户的另一种方式是通过使用GRANT SQL命令; 下面的例子将增加用户zara 并使用密码zara123 为特定数据库:tutorials
D:softwaremysql-5.6.25-winx64in> mysql -u root -p password;
Enter password:
mysql> use mysql;
Database changed
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON tutorials.*
-> TO 'yiibai'@'localhost'
-> IDENTIFIED BY '123456';
这也将创建一条记录在MySQL数据库中的表: user
注意: MySQL不会终止命令,直到给一个分号(;)在SQL命令的结尾。
7.my.ini 文件配置
大多数情况下,不需要去修改这个文件。默认情况下,它会具有以下项:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysql.server]
user=mysql
basedir=/var/lib
[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
在这里,可以指定错误日志为其它的目录,否则不应该更改此文件中的任何内容。
8. 管理 mysql 命令
这里是重要的MySQL命令,经常在MySQL数据库的管理或工作中使用:
○ USE Databasename : 用于选择在MySQL工作区指定的数据库。
○ SHOW DATABASES: 列出了MySQL数据库管理系统中的所有可访问的数据库。
○ SHOW TABLES: 显示已经选择数据库中的表的命令。
○ SHOW COLUMNS FROM tablename: 显示属性,属性类型,关键信息,NULL是否被允许,默认值和其它的表信息。
○ SHOW INDEX FROM tablename: 提供所有索引的详细信息表,其中包括PRIMARY KEY.
○ SHOW TABLE STATUS LIKE tablenameG: 报告MySQL的数据库管理系统的性能和统计数据的详细信息。
○ SHOW TABLE STATUS FROM tablespace [ like tablename ] ;: 查看某一个数据库的某些表的详细信息。
9. 使用MySQL二进制连接MySQL
可以使用MySQL二进制在命令提示符下建立MySQL数据库的连接。
示例:
下面是一个简单的例子,从命令提示符连接MySQL服务器:
D:softwaremysql-5.6.25-winx64in> mysql -u root -p
Enter password:
注意,这里密码为空,直接回车就就进入mysql>命令提示符下,能够执行任何SQL命令。以下是上述命令的结果:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.6.25 MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may
be trademarks of their respective owners.
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
在上面的例子中,我们使用 root 用户,但可以使用任何其他用户。任何用户将能够执行所有的SQL操作(前提这个用户有对应执行SQL权限)。
任何时候使用exit命令在mysql>提示符下,从MySQL数据库断开。
mysql> exit
Bye
10. MySQL创建数据库
需要特殊权限创建或删除一个MySQL数据库。因此,假如有权使用 root 用户,就可以用mysql中的mysqladmin来创建数据库。
示例:
下面是一个简单的例子,创建名为 tutorials 的数据库。
D:softwaremysql-5.6.25-winx64in> mysqladmin -u root -p create tutorials
Enter password:<回车>
或
D:softwaremysql-5.6.25-winx64in> mysql -u root -p
Enter password:
mysql>create database yiibai_tutorials1;
mysql>create database yiibai_tutorials2;
这将创建一个MySQL数据库:yiibai_tutorials1 和 yiibai_tutorials2,使用下面命令查看结果:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| yiibai_tutorials1 |
| yiibai_tutorials2 |
+--------------------+
6 rows in set (0.00 sec)
11. MySQL删除数据库
需要特殊权限来创建或删除一个MySQL数据库。因此,假如你有机会获得root用户来登录,可以用mysql中mysqladmin二进制来创建任何数据库。
在删除任何数据库时要注意,因为删除数据库时所有的数据在数据库中。
下面是一个例子,用来删除前面的章节中所创建的数据库:
D:softwaremysql-5.6.25-winx64in> mysqladmin -u root -p drop yiibai_tutorials1
Enter password:******
这会给出一个警告,它会确认你是否真的要删除这个数据库或不删除。
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Do you really want to drop the 'yiibai_tutorials1' database [y/N] y
Database "yiibai_tutorials1" dropped
或使用:
mysql> drop database yiibai_tutorials1;
Query OK, 0 rows affected (0.01 sec)
PS: 使用mysqladmin命令的时候,后面不能跟分号结尾。在mysql窗口中使用命令的时候必须以分号结尾。
使用下面命令看删除后,数据库的列表情况:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| yiibai |
+--------------------+
6 rows in set (0.00 sec)
连接到MySQL服务器后,则需要选择特定的数据库的来工作。这是因为可能有多个数据库可使用在MySQL服务器上。
12. 从命令提示符选择MySQL数据库
这是非常简单的,从MySQL>提示符下选择一个特定的数据库。可以使用SQL命令的 user 来选择一个特定的数据库。
示例:
下面是一个例子,选择数据库为 test :
D:softwaremysql-5.6.25-winx64in> mysql -u root -p
Enter password:
mysql> use test;
Database changed
mysql>
现在,我们已经选择 test 数据库,后续所有操作将在 test 数据库上执行。
注意: 所有的数据库名,表名,表中的字段名称是区分大小写的。所以,我们必须使用适当的名称,在给定任何SQL命令。