MYSQL-基础命令
**************************************************************************************************
Linux环境下【myslq> 命令不区分大小写】
【环境准备】
安装mysql服务:
[linux-shell]$ sudo apt install mysql-server
启动mysql服务:
[linux-shell]$ sudo service mysql start
登录进mysql服务:
[linux-shell]$ mysql -u root // -u 用户名(默认root用户没有密码)
有密码的用户登录需要加上命令行传参-p 然后回车再输入密码:
[linux-shell]$ mysql -u root -p // 敲回车后会提示输入密码,将root用户密码输入即可登录
/**************************************************************************************************
远程登录数据库:
需要命令行传参-h 指定mysql所在的IP地址:
[linux-shell]$ mysql -h 192.168.1.56 -u user57 -p
远程登录的情况,需要数据库服务器上有可以用于远程登录的用户,并且登录IP限制要符合规范。
比如:数据库在服务器1.56上,现在需要在1.57的机器上登录1.156的mysql;要满足如下几点:
1.两台设备(1.56与1.57)网络连接正常(可以互相ping通)。
2.数据库服务器(1.56)上mysql中的用户有可以从1.57登录的用户;比如:'user57'@'192.168.1.57' 或者 'userall'@'%'...满足规则的均可。
3.每个用户有对应的权限,如需远程操作mysql,就要保证登录的用户权限足够。
**************************************************************************************************/
首次登陆后需要设置root用户密码:
mysql> flush privileges; // 在skip-grant-table模式加了新用户后,需要先刷新用户表;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123'; // 把root用户的密码设置为root123
退出mysql:
mysql> quit; 或 ctrl+D;
停止mysql服务:
[linux-shell]$ sudo service mysql stop
/**************************************************************************************************
当新安装的数据库,root用户登陆报错(Access denied for user 'root'@'localhost')
需要设置root用户的密码与plugin:
1. 先在mysql配置文件中将登陆验证关闭:
[linux-shell]$ sudo vim /etc/mysql/mysql.conf.d/mysql.conf
在打开的mysql.conf文件中,在[mysqld]项下单独添加一行: skip-grant-tables
保存退出。
2. 重启mysql服务:
[linux-shell]$ sudo /etc/init.d/mysql restart
3. 登陆mysql服务:
[linux-shell]$ mysql
4. 在mysql服务中选择mysql数据库:
mysql> use mysql; // 可以使用 show databases; 查看所有数据库
5. 设置root用户密码为root:
mysql> update user set authentication_string=password("root") where user="root";
6. 刷新权限:
mysql> flush privileges;
7. 设置root用户的plugin为mysql_native_password:
mysql> update user set authentication_string=password("root"),plugin='mysql_native_password' where user='root';
// 可以查看当前所有用户的plugin:mysql> select user,plugin from user;
8. 退出mysql服务,还原配置文件,然后重启mysql服务
mysql> quit;
[linux-shell]$ sudo vim /etc/mysql/mysql.conf.d/mysql.conf
// 将添加行 skip-grant-tables 注释或者删除,后保存退出
[linux-shell]$ sudo /etc/init.d/mysql restart
9. 即可使用root用户登录:
[linux-shell]$ mysql -u root -p // 然后回车后,输入密码 root
**************************************************************************************************/
【用户操作】
查看所有用户:
mysql> select distinct concat('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
创建用户并指定登录IP,'用户名'@'登录IP' 密码为'liubei123':
mysql> create user 'liubei'@'192.168.1.157' identified with mysql_native_password by 'liubei123';
此处指定登录IP的形式有多种,可根据不同情景使用不同的方式;
限制来源的IP地址: 'liubei'@'192.168.1.157'
限制来源的IP网段: 'liubei'@'192.168.1.%' // % 表示任意
不限制来源IP: 'liubei'@'%' // 默认IP地址为 %
修改用户
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
删除用户:
mysql> drop user 'liubei'@'192.168.1.157';
【数据库&表操作】
创建数据库:
创建testdb1数据库:
mysql> create database testdb1;
创建testdb2数据库,采用utf8编码格式:
mysql> create database testdb2 CHARACTER SET utf8 COLLATE utf8_general_ci;
创建testdb3数据库,采用gbk编码格式:
mysql> create database testdb3 CHARACTER SET gbk COLLATE gbk_chinese_ci
查看现有数据库:
mysql> show databases;
删除数据库:
mysql> drop database 数据库名;
示例-删除数据库testdb1: mysql> drop database testdb1;
[表操作]:
所有的表都存在于数据库中,在操作表之前,需要先选择操作的数据库:
mysql> use 数据库名; 示例:mysql> use testdb;
选择数据库后,所有的表操作,只针对于当前数据库;
创建表[]内的内容可选:
create table 表名(
列名 类型 [(宽度) 约束条件],
列名 类型 [(宽度) 约束条件]
);
示例:
mysql> create table tab(
-> id int,
-> name varchar(50),
-> age int(3),
-> sex eumn('male','female'),
-> phone int(11)
-> );
查看表结构:
mysql> desc 表名; 示例: mysql> desc tab;
查看表内容:
mysql> select * from 表名; 示例: mysql> select * from tab;
在表中插入数据:
方法1: mysql> insert into tab(id,name,age,sex,phone) values (1,'YuPiao',23,'female',18282063498);
方法2: mysql> insert into tab values (2,'LiuYaLin',24,'female',18398605362);
方法4: mysql> insert into tab values (3,'LiuDuan',22,'female',15282637173),(4,'LiuLiMei',23,'female',15883378741);
从表中删除数据:
mysql> delete from 表名 where 字段名 = 被删除的特征值;
示例: mysql> delete from tab where id = 5; // 删除表中id = 5的所有行;
mysql> delete from tab where name = 'xxx'; // 删除表中name为'xxx'的所有行;
删除表:
mysql> drop table 表名; 示例: mysql> drop table tab;
*修改表结构:
1. 修改表名
ALTER TABLE 表名 RENAME 新表名; 示例: mysql> ALTER TABLE tab RENAME tab_new;
2. 增加字段
ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…], ADD 字段名 数据类型 [完整性约束条件…];
示例: mysql> ALTER TABLE tab_new
-> ADD age1 int(3),
-> ADD age2 int;
3. 删除字段
ALTER TABLE 表名 DROP 字段名; 示例: mysql> ALTER TABLE tab_new DROP age1, DROP age2;
4. 修改字段
ALTER TABLE 表名
MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];