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_PERMANENT0.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