4 创建用户数据库
如果想改变MYSQL数据文件的默认路径,我们可以关闭MYSQL实例,修改配置文件”my.cnf”或”my.ini”(WINDOWS系统)中的datadir对应的参数值,然后把MYSQL默认安装的datadir下的内容拷贝到新的数据文件路径下,启动MYSQL实例这样我们再次创建数据库的时候数据文件就放在新的路径下了。mysql> CREATE DATABASE MYTEST;
Query OK, 1 row affected (0.00 sec)
5 创建数据库用户mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| mytest |
| root |
+--------------------+
4 rows in set (0.01 sec)
![]()
mysql> USE MYTEST;
Database changed
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| mytest |
+------------+
1 row in set (0.00 sec)
![]()
mysql> SHOW TABLES;
Empty set (0.01 sec)
![]()
可以用两种方式创建MySQL账户:
(1)直接操作MySQL授权表user(不推荐)
(2)CREATE USERmysql>INSERT INTO mysql.user VALUES('localhost','zhouwf', PASSWORD ('zho uwf'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
(3)直接使用GRANT语句mysql> create user test_cr identified by 'test_cr';
Query OK, 0 rows affected (0.23 sec)
我们可以不用第二步的CREATE语法来执行,而直接GRANT就可以创建用户。
注意:其中两个账户有相同的用户名TEST和密码TEST。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户('TEST'@'localhost')只用于从本机连接时。另一个账户('TEST'@'%')可用于从其它主机连接。请注意TEST的两个账户必须能mysql> GRANT ALL PRIVILEGES ON *.* TO 'TEST'@'LOCALHOST' IDENTIFIED BY 'TEST' WITH GRANT OPTION;
Query OK, 0 rows affected (0.06 sec)
![]()
mysql> GRANT ALL PRIVILEGES ON *.* TO 'TEST'@'%' IDENTIFIED BY 'TEST' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
![]()
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON MYSQL.* TO TEST_NORMAL@'LOCALHOST' IDENTIFIED BY 'TEST_NORMAL';
Query OK, 0 rows affected (0.00 sec)
![]()
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON MYSQL.* TO TEST_NORMAL@'%' IDENTIFIED BY 'TEST_NORMAL';
Query OK, 0 rows affected (0.02 sec)
![]()
mysql> SELECT USER FROM MYSQL.USER;
+-------------+
| USER |
+-------------+
| TEST |
| TEST_NORMAL |
| root |
| TEST |
| TEST_NORMAL |
| root |
+-------------+
6 rows in set (0.00 sec)
从任何主机以TEST连接。没有localhost账户,当TEST从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。
结果是,TEST将被视为匿名用户。原因是匿名用户账户的Host列值比'TEST'@'%'账户更具体,这样在user表排序顺序中排在前面。
注意:用户名和密码区分大小写。
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| mytest |
+------------+
1 row in set (0.00 sec)
![]()
mysql> SELECT USER();
+----------------+
| USER() |
+----------------+
| TEST@localhost |
+----------------+
1 row in set (0.00 sec)
![]()
