MySQL初级使用教程 (创建用户,创建数据库,数据库授权)

MySQL初级使用教程

参考文献

1.创建数据库

登录MySQL服务后使用create命令创建数据库

    CREATE DATABASE 数据库名称;

举例创建一个简单的数据库,RUNOOB

    [root@host]# mysql -u root -p   
    Enter password:******  # 登录后进入终端
    mysql> create DATABASE RUNOOB;

使用 mysqladmin 创建数据库

使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库。
所以我们这边使用root用户登录,root用户拥有最高权限,可以使用 mysql mysqladmin 命令来创建数据库。
以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:

    [root@host]# mysqladmin -u root -p create RUNOOB
    Enter password:******

以上命令执行成功后会创建 MySQL 数据库 RUNOOB。

拓展:

    CREATE DATABASE IF NOT EXISTS RUNOOB DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;

意思是如果数据库不存在就创建数据库RUNOOB,并设定字符集为utf8mb4(因为MYSQL的utf8是个假的utf8,正确对应熟知的UTF-8字符集是utf8mb4,有兴趣的可以搜索一下),排序规则为utf8utf8mb4_general_ci。
查看所有的数据库

    SHOW DATABASES;

MySQL初级使用教程 (创建用户,创建数据库,数据库授权)_第1张图片

utf8mb4_unicode_ci和utf8mb4_general_ci对中、英文来说没有实质的差别。
utf8mb4_general_ci 校对速度快,但准确度稍差。
utf8mb4_unicode_ci 准确度高,但校对速度稍慢。
如果你的应用有德语、法语或者俄语,请一定使用utf8mb4_unicode_ci。一般用utf8mb4_general_ci就够了。
附:
ci是 case insensitive, 即 “大小写不敏感”, a 和 A 会在字符判断中会被当做一样的;
bin 是二进制, a 和 A 会别区别对待。
例如你运行:
SELECT * FROM table WHERE txt = ‘a’
那么在utf8mb4_bin中你就找不到 txt = ‘A’ 的那一行, 而 utf8mb4_general_ci 则可以。
utf8mb4_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
utf8mb4_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果
utf8mb4_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容

2 创建普通用户

在windows下是可以直接使用root的,但是如果是在linux系统下,用root用户登录mysql需要系统管理员的权限,另外使用root进行对数据库操作总是不安全和不符合规范的
命令

    CREATE USER 'username'@'host' IDENTIFIED BY 'password';

说明:

  • username:你将创建的用户名
  • host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
  • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

例子:

    CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';  
    CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
    CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
    CREATE USER 'pig'@'%' IDENTIFIED BY '';
    CREATE USER 'pig'@'%';

查看所有用户

    SELECT User, Host FROM mysql.user;
    SELECT DISTINCT User FROM mysql.user; ##去除重复的用户

mysql数据库下已经没有password这个字段了,password字段改成了’authentication_string’
所以命令应该改为’SELECT User, Host, Authentication_string FROM mysql.user;’
所以更改语句替换为update MySQL.user set authentication_string=password(‘root’) where user=‘mysql’;
尝试后发现的确没有字段password,有 Authentication_string 字段,但是后期修改密码使用该字段无效。

3 授权用户

命令

    GRANT privileges ON databasename.tablename TO 'username'@'host';

说明:

*privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
*databasename:数据库名
*tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*

例子:

    GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
    GRANT ALL ON *.* TO 'pig'@'%';
    GRANT ALL ON *.* TO 'giligency'@'localhost';
    GRANT ALL ON maindataplus.* TO 'pig'@'%';
    GRANT privileges ON *.* TO 'mysql'@'localhost';

注意
(当然,授权是让管理员给普通用户授权)
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

    GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

刷新授权

    flush privileges;

4 更改用户名和密码

命令

    SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
    mysqladmin -u用户名 -p旧密码 password 新密码
    update user set password=password('123') where user='root' and host='localhost'; 

如果是当前登陆用户用:

    SET PASSWORD = PASSWORD("newpassword");

这里在我的版本里尝试以上三种方式修改密码均失败,爆语法错误,有待研究

例子:

    SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");

mysql5.7更改密码应该采用命令ALTER USER ‘root’@'localhost’IDENTIFIED BY ‘********’;
其中密码的命名规则有所改变
设置的密码中必须至少包含一个大写字母、一个小写字母、一个特殊符号、一个数字,密码长度至少为8个字符

5 撤销用户权限

命令

    REVOKE privilege ON databasename.tablename FROM 'username'@'host';

说明:

privilege, databasename, tablename:同授权部分

例子:

    REVOKE SELECT ON *.* FROM 'pig'@'%';

注意:

假如你在给用户’pig’@’%‘授权的时候是这样的(或类似的):
GRANT SELECT ON test.user TO ‘pig’@’%’,
则在使用
REVOKE SELECT ON . FROM ‘pig’@’%’;
命令并不能撤销该用户对test数据库中user表的SELECT 操作。
相反,如果授权使用的是
GRANT SELECT ON . TO ‘pig’@’%’;

REVOKE SELECT ON test.user FROM ‘pig’@’%’;
命令也不能撤销该用户对test数据库中user表的Select权限。
具体信息可以用命令
SHOW GRANTS FOR ‘pig’@’%’;
查看。

6 删除用户

    DROP USER 'username'@'host';

7 忘记root密码

  1. 关闭正在运行的MySQL服务。
  2. 打开DOS窗口,转到mysql\bin目录。
  3. 输入mysqld --skip-grant-tables 回车。–skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
  4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
  5. 输入mysql回车,如果成功,将出现MySQL提示符 >。
  6. 连接权限数据库: use mysql; 。
  7. 改密码:update user set password=password(“123”) where user=“root”;(别忘了最后加分号) 。
  8. 刷新权限(必须步骤):flush privileges; 。
  9. 退出 quit。
  10. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。

https://blog.csdn.net/piaocoder/article/details/53704126/更多(包含linux系统下如何外网登录的内容)

你可能感兴趣的:(mysql)