参考文献
登录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;
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:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容
在windows下是可以直接使用root的,但是如果是在linux系统下,用root用户登录mysql需要系统管理员的权限,另外使用root进行对数据库操作总是不安全和不符合规范的
命令
CREATE USER 'username'@'host' IDENTIFIED BY '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 字段,但是后期修改密码使用该字段无效。
命令
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;
命令
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个字符
命令
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’@’%’;
查看。
DROP USER 'username'@'host';
https://blog.csdn.net/piaocoder/article/details/53704126/更多(包含linux系统下如何外网登录的内容)