一、用root 登录
后面的操作都需要首先进入mysql用户里面,即前面要显示mysql> 才有效
mysql -uroot -p
输入密码后进入
二、创建用户
mysql>CREATE USER 'username'@'host' IDENTIFIED BY 'password';
@左右两边必须紧靠,我就是空格了一直错误
username是用户名
password是密码
host是登录地址
小提示:如果host为%,则第三步就不需要了,直接就是任意IP远程登录。
三、设置远程登录(两种方法)
方法1
设置远程登录地址为%,即所有地方登录,如果是公网IP可以设置精确的IP地址,不是公网的就%吧
update mysql.user set host='%' where user='root';
然后刷新语句
flush privileges;
输入完后就成功了,使用navicat等工具进行连接,IP地址,端口3306(默认)
方法2
如果是root第一次设置,必须使用第一个方法,如果是其他新建用户,就可以用这个方法,没差多少
1.先用root登录远程
2.然后修改mysql.user表下的对应用户
我还没创建,所以只有root,应该懂我意思了。
四、设置权限
设置权限相对来说就比较复杂一丢丢
首先我们创建一个用户名zzm,并且设置host为%,可以进行远程登录
create user 'zzm'@'%' identified by '123456';
语法
基本语法:
mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
权限1,权限2,…权限n代表:
select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限
1、精确到表:权限只给到表
如果需要全部权限,直接一了百了,使用all privileges,如:
grant all privileges on rootTest_db.* to zzm@'%' identified by '123';
grant select,insert,update,delete,create,drop on rootTest_db.testTable to zzm@'%' identified by '123456';
意义:给来自%(任意)地方的用户zzm分配可对数据库rootTest_db的testTable 表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123456。
口令可以不需要,我一般不写,没试过,可能输入后每次操作都需要一次口令吧,自行尝试。
2、精确到某数据库:权限只给到某数据库
grant all privileges on rootTest_db.* to zzm@'%';
意义:给来自%(任意)地方的用户zzm分配可对数据库rootTest_db所有表进行所有操作的权限。
3、所有数据库可操作,(谨慎)
grant all privileges on *.* to zzm@'%';
意义:给来自%(任意)地方的用户zzm分配可对所有数据库的所有表进行所有操作的权限。
提示
最后都要刷新一下,刷新系统权限表
flush privileges;
以上方法都可以组合,如
不同的权限,select,update等等 + 不同的表 或 数据库 或 所有数据库所有表
五、权限删除
REVOKE SELECT ON *.* FROM 'zzm'@'%';
意义:移除来自%的zzm用户对所有数据库所有表的查询(select)权限
REVOKE all ON rootTest_db.testTable FROM 'username'@'host';
意义:移除来自%的zzm用户对rootTest_db数据库testTable 表的所有权限。
注意,所有权限,是all 不是all privileges
六、删除用户和权限
删除就比较简单了,直接drop,如:
DROP USER 'zzm'@'%';
删除操作有可能会报错,MySQL8-root用户-提示“1227 - Access denied”解决办法
缘由:原因是MySQL8版本中新增了一个system_user帐户类型,但是由于root用户没有SYSTEM_USER权限,所以出现问题,把权限加入后即可解决
解决办法:对没有权限的用户授权,如对root授权
参考:
GRANT system_user ON *.* TO 'root';
七、数据库操作
数据库操作有很多的方法,可以直接登录mysql进行代码操作,也可以用官方的mysql操作,也可以用navicat第三方操作,我比较喜欢navicat,比较适合新手,但是建议大家还是
好好学基本的命令行操作。
我就是太依赖于工具,有时候环境不允许,用mysql命令又不会,所以才回来学习。
mysql> SHOW DATABASES; //显示数据库
mysql> USE abccs //进入数据库
mysql> SHOW TABLES; //显示表
mysql> DESCRIBE mytable; //显示表结构
mysql> CREATE DATABASE abccs; //创建一个数据库
mysql> CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1), birth DATE, birthaddr VARCHAR(20)); //创建表
mysql> insert into mytable values (‘abccs’,‘f’,‘1977-07-07’,‘china’);
mysql> drop database drop_database; //删除一个已经确定存在的数据库