MySQL常用命令
目录
0.1 库
0.1.1 查询库
mysql> SHOW DATABASES;
0.1.2 创建库
mysql> CREATE DATABASE 库名;
mysql> create database sonar character set utf8mb4 collate utf8mb4_unicode_ci;
0.1.3 创建表
mysql> USE 库名;
mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
0.1.4 删除库
mysql> DROP DATABASE 库名;
0.1.5 删除表
mysql> DROP TABLE 表名;
0.2 用户
0.2.1 创建用户
mysql> create user '[用户名称]'@'%' identified by '[用户密码]';
密码8位以上,包括:大写字母、小写字母、数字、特殊字符,%:匹配所有主机,‘localhost’,代表只能本地访问
0.2.2 删除用户
mysql> drop user [用户名称]@'%';
0.3 授权
0.3.1 添加授权
mysql> grant all on [数据库名称].* to [用户名称];
*代表整个数据库
mysql> grant [权限1,权限2,权限3] on *.* to user@'host' identified by 'password'
常用权限:all privileges、create、drop、select、insert、delete、update
mysql> grant all privileges on *.* to root@'%' with grant option;
mysql> flush privileges;
- all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
- on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写"*“表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
- to:将权限授予哪个用户。格式:“用户名”@“登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:‘root’@‘192.168.1.%’,表示root这个用户只能在192.168.0.* IP段登录
- with grant option:通过在grant语句的最后使用该子句,就允许被授权的用户把得到的权限继续授给其它用户
0.3.2 撤销授权
mysql> revoke all on test.* from admin;
授权用户远程连接
在本机先使用root用户登录 mysql mysql -u root -p"youpassword"
进行授权操作:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@'%' identified by 'root';
重载授权表
mysql> flush privileges;
0.4 密码修改
方法1: 用SET PASSWORD
命令
首先登录MySQL。
格式
mysql> set password for 用户名@localhost = password('新密码');
例子
mysql> set password for root@localhost = password('123');
方法2:用mysqladmin
格式
mysqladmin -u用户名 -p旧密码 password 新密码
例子
mysqladmin -uroot -p123456 password 123
方法3:用UPDATE
直接编辑user表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;
方法4:使用 alter user 修改
mysql> alter user 'root'@'%' identified by '123456';
mysql> flush privileges;
0.4.0.1 常见问题解决
ERROR 1045 (28000): Access denied for user
大意就是你有一个用户名为空的账户,mysql会先匹配它,然后就一直提示你密码错误,删掉这个匿名用户,然后执行FLUSH PRIVILEGES
;
mysql> delete from user where user=' ';
mysql> flush privileges;
0.5 密码复杂度策略配置
插件库的文件名是validate_password
。要在服务器启动时加载插件,可以使用--plugin-load-add
选项来命名包含它的库文件。使用这种插件加载方法,必须在每次服务器启动时提供该选项。例如,将这些行放到服务器my.cnf文件中(根据需要调整平台的.so后缀)
[mysqld]
plugin-load-add=validate_password.so
#服务器在启动时加载插件,并防止在服务器运行时删除插件。
validate-password=FORCE_PLUS_PERMANENT
0.5.1 安装插件
mysql> install plugin validate_password soname 'validate_password.so';
0.5.2 查看参数
mysql> show variables like 'validate_password%';
用于控制validate_password
行为系统参数
这些参数是要安装好validate_password 插件后才能通过show variables like 'validate_password%';
看到。
validate_password_policy 这个参数用于控制validate_password的验证策略 0-->low 1-->MEDIUM 2-->strong。
策略解释
0 or LOW 校验级别最低,只校验密码长度,只要长度跟validate_password_length一样即可,默认长度是8位。
1 or MEDIUM 这个时候首先要满足的是validate_password_policy=0时的验证要求。然后先去验证密码中的数字个数,大小写个数,特殊字符个数。
2 or STRONG 这个时候必须先满足0,1的要求,然后它还追加了一个,对于密码中任意连续4个(或4个让上)字符不得是字典中的单词
validate_password_length密码长度的最小值(这个值最小要是4)。
validate_password_number_count 密码中数字的最小个数。
validate_password_mixed_case_count 大小写的最小个数。
validate_password_special_char_count 特殊字符的最小个数。
validate_password_dictionary_file 字典文件
0.5.3 修改参数
mysql> set global validate_password_length=8
mysql> set global validate_password_number_count=1
mysql> set validate_password_mixed_case_count=1
mysql> set validate_password_special_char_count=1