MySQL基础操作学习
认识数据库
- 数据库 : 用来存储海量数据的仓库 。
- SQL :用于访问和处理数据库的计算机语言。
分类:
- 关系型数据库(二维表格形式):Oracle,MySQL,MariaDB,SQL Server…
- 非关系型数据库(not only sql): Memcached,redis,MongoDB…
MySQL基础操作
安装mysql
1 | apt-get install mysql-server mysql-client |
登录mysql
1 | mysql -u root -p |
退出mysql
1 | \q |
当前用户
1 | SELECT USER(); |
当前日期时间
1 | SELECT NOW(); |
当前版本信息
1 | SELECT VERSION(); |
服务器状态
1 | SHOW STATUS; |
服务器配置变量
1 | SHOW VARIABLES; |
用户相关命令
(1)创建用户
1 | create user 'name'@'host' identified by 'password'; |
(2)删除用户
1 | drop user name@'host'; |
(3)为用户授权
1 | grant some_privileges on *.* to 'name'@'host'; |
查看
1 | select * from user where user='wyw'; |
(4)撤销用户权限
1 | revoke some_privileges to *.* from 'name'@'host'; |
查看
库相关命令
(1)增
1 | CREATE DATABASE db_name; |
(2)删
1 | DROP DATABASE db_name; |
(3)查
1 | SHOW DATABASES; |
1 | SHOW CREATE DATABASE db_name; |
(4)打开数据库
1 | USE db_name; |
(5)查看当前所在数据库
1 | SELECT DATABASE(); |
表相关命令
(1)增
1 | CREATE TABLE table_name( |
// []中内容可省略。
eg:
1 | CREATE TABLE user( |
(2)删
1 | DROP TABLE table_name; |
(3)改
1 | ALTER TABLE tab_name RENAME new_tab_name; |
(4)查
查看表
1 | SHOW TABLES[FROM db_name]; |
查看数据表结构
1 | DESC table_name; |
字段相关命令
(1)增
1 | ALTER TABLE table_name ADD col_name col_definition[FIRST|AFTER col_name]; |
1 | ALTER TABLE table_name ADD (col_name col_definition,...); |
(2)删
1 | ALTER TABLE table_name DROP col_name; |
1 | ALTER TABLE table_name DROP col_name,DROP col_name,...; |
(3)改
1 | ALTER TABLE tab_name MODIFY col_name col_definition[FIRST|AFTER col_name]; |
1 | ALTER TABLE tab_name CHANGE old_col_name new_col_name col_definition[FIRST|AFTER col_name]; |
数据相关命令
(1)增
1 | INSERT INTO table_name(column_name,...) |
1 | INSERT INTO table_name SET col_name=expr,...; |
1 | INSERT INTO table_name(col_name) SELECT col_name FROM table_reference; |
(2)删
1 | DELETE FROM table_name [WHERE where_condition]; |
(3)改
1 | UPDATE table_name SET col_name1=expr,col_name2=expr,...[WHERE where_condition]; |
(4)查
1 | SELECT * FROM table_name [WHERE where_condition]; |
1 | SELECT column_name,... FROM table_name; |
查询结果分组
1 | SELECT col_name FROM table_name GROUP BY col_name; |
查询结果排序
1 | SELECT col_name FROM table_name ORDER BY col_name ASC|DESC; |
限制查询结果返回数量
1 | SELECT * FROM table_name LIMIT row_count; |
(5)连接
mysql在SELECT,UPDATE,DELETE语句中支持JOIN操作
1 | table_reference INNER|LEFT|RIGHT JOIN table_reference ON conditional_expr |
密码设置与远程连接
MySQL中为root用户设置密码
进入mysql后发现root用户密码为空
1 | USE mysql; |
1 | SELECT host,user,authentication_string FROM user; |
使用以下命令设置密码:
1 | ALTER USER 'root'@'%' IDENTIFIED BY '新密码' PASSWORD EXPIRE NEVER; |
1 | ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码'; |
1 | FLUSH PRIVILEGES; |
出现错误:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查找资料:
原因是因为密码设置的过于简单会报错,MySQL有密码设置的规范
如果想要查看MySQL完整的初始密码规则,登陆后执行以下命令:
1 | SHOW VARIABLES LIKE 'validate_password%'; |
validate_password.length决定密码的长度,默认长度为8位,可以通过以下命令修改为4位:
1 | set global validate_password.length=4; |
validate_password_policy决定密码的验证策略,默认等级为MEDIUM(中等),可以通过以下命令修改为LOW(低):
1 | set global validate_password.policy=0; |
修改完成后密码就可以设置的很简单。
再次设置密码
成功!
退出后重新使用设置的密码进入MySQL
再次查看用户及密码:
1 | SELECT host,user,authentication_string FROM user; |
完成!
Navicat远程连接MySQL
1)修改配置文件
1 | vi etc/mysql/mysql.conf.d/mysqld.cnf |
查找到bind-address,将bind-address=127.0.0.1 修改为bind-address=0.0.0.0 ,以允许任何IP来访问MySQL服务
2)重启MySQL服务
1 | service mysql restart |
3)给需要远程访问的用户授权
授权所有权限
1 | grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; |
参考资料
[2] ERROR 1819 (HY000): Your password does not satisfy the current policy requirements