1.用户操作
- 注意:操作用户本身是需要有权限的。
1.1 新建用户
新建用户需要用户名,密码和允许登录的主机IP;
命令格式:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username:用户名;
password:用户密码;
host:表示允许连接到数据库服务的主机,localhost表示本地主机,%通配符表示允许任意主机登录。
* 注意:这里的host会影响到远程登录操作数据库
以下命令创建用户名为liguo,密码为12345678的用户,该用户仅允许通过本地主机登录:
CREATE USER 'liguo'@'localhost' IDENTIFIED BY '12345678';
1.2 用户授权
通过1.1中的命令创建的用户默认是没有增删改查权限的,需要使用GRANT
命令来授权。授权需要制定要授权的用户、所授予的权限和给予操作权限的数据表,命令格式如下:
GRANT privileges ON db_name.table_name TO 'username'@'host'
privileges:要授予的权限,insert
,delete
,update
,select
对应增删改查,要全部授予可以使用ALL
;
db_name:要给予操作权限的数据库;
table_name:要给予操作权限的数据表,允许全部数据表可以使用通配符.;
可以使用
SHOW GRANTS FOR 'username'@'host';
来查询用户的操作权限。
操作权限变更后,使用FLUSH privileges
命令可以在权限修改后不用重启mysql服务立即生效。
1.3 取消授权
使用REVOKE
命令撤销,命令格式与GRANT
类似:
REVOKE privilege ON db_name.table_name FROM 'username'@'host';
1.4 删除用户
太简单了!
DROP USER 'username'@'host';
1.5 用户信息查询
mysql.user是一个记录用户信息的数据表,里面记录了用户所有的信息,可以使用SELECT
命令查询该表格以得到用户信息,使用SHOW COLUMNS FROM mysql.user
可以查看数据表的列名。
查看所有用户的所有信息:
SELECT * FROM mysql.user;
查看用户liguo的用户名,主机,查询权限信息:
SELECT user,host,Select_priv FROM mysql.user where user='liguo';
2. 远程连接数据库
mysql服务器处于安全考虑,默认是不允许远程连接数据库的。因此,为了远程登录mysql服务器,需要开放权限,修改配置文件。
2.1 开放用户的远程登录权限(需要root权限)
开放权限后可以使得该用户可以远程登录到该服务器:
GRANT ALL PRIVILEGES ON *.* TO 'liguo'@"%" IDENTIFIED BY "passwd" WITH GRANT OPTION;
修改之后,用户liguo只要使用密码'passwd'就可以从任意主机(%)连接到该数据库了,WITH GRANT OPTION
表示该用户具有授权给其他用户的权限。
2.2 修改mysql的配置
将配置文件中的 bind-address = 127.0.0.1 这一行用'#'注释掉,这里注意,不同版本的mysql配置文件可能不一样。
我使用的是ubuntu +mysql5.7,配置文件路径为:/etc/mysql/mysql.conf.d/mysqld.cnf
使用sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到对应的一行,注释掉后保存即可;
2.3 重启mysql服务
使用 service mysql restart
重启服务器使得配置生效。
重启过后,远程客户端通过-h参数指定主机ip即可实现远程连接。
3.增删改查
3.1 建表
CREATE TABLE IF NOT EXISTS table_name
(
key_name1 key_type1,
key_name2 key_type2,
...
key_namen key_typen,
PRIMARY KEY(key_name)
) default charset=utf8;
key_name:键名
key_type:键类型
PRIMARY KEY(key_name):设置主键
default charset=utf8:设置编码为utf8,这样就能存储中文字符了
注意:要存储中文字符,还需要修改配置文件,在文件中加入以下配置:
[mysqld]
collation-server = utf8_unicode_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
修改后重启数据库服务器即可。
另外,使用 SHOW VARIABLES LIKE '%char%;'
命令可以查询服务器的字符集编码。
3.2 增加数据
INSERT INTO table_name (key1,key2...keyn) VALUES (value1,value2,value3);
key:要添加的键名
value:要添加的值
3.3 删除数据
DELETE FROM table_name WHERE cause;
cause:记录所满足的条件
3.4 修改数据
UPDATE table_name SET key1=value1,key2=value2 WHERE cause;
3.5 查询数据
SELECT col1,col2..coln FROM table_name WHERE cause;
col1-n为要查询的列名(键名),可以使用'*'表示通配符。