一、用root 登录

后面的操作都需要首先进入mysql用户里面,即前面要显示mysql> 才有效

mysql -uroot -p

输入密码后进入

mysql中请创建一个新用户 mysql8创建用户_ide

二、创建用户

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表下的对应用户

mysql中请创建一个新用户 mysql8创建用户_mysql中请创建一个新用户_02


mysql中请创建一个新用户 mysql8创建用户_mysql_03

我还没创建,所以只有root,应该懂我意思了。

四、设置权限

设置权限相对来说就比较复杂一丢丢
首先我们创建一个用户名zzm,并且设置host为%,可以进行远程登录

create user 'zzm'@'%' identified by '123456';

mysql中请创建一个新用户 mysql8创建用户_mysql_04

语法

基本语法:
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;   //删除一个已经确定存在的数据库