学习笔记【centOS7,mysql,xshell,vbox】
1.VMware Workstations 14 安装与配置教程
官方下载地址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
VMware进去总是卡住,内存太大,改用virtualbox,轻便。
虚拟机的CentOS镜像推荐使用minimal版本
注意: 虚拟机网络要开启桥接,这样才能获取到需要的ip
$ vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
图片中的no改为yes
然后输入下方的命令,注意网络要开启桥接。
image.png
改为桥接之后再执行一次service---
然后把下图命令挨个执行一遍
image.png
操作完成之后可以看到下图的inet
image.png
打开xshell,把刚才的inet输入进去,添加之后输入用户名和密码就可以和v box连接起来,可以很方便的使用复制和粘贴功能。
centos 7安装 mysql
一、卸载系统自带的相关
首先检查系统中是否存在使用rpm安装的mysql或者mariadb,如果有需要先删除后再编译安装。
1.rpm -qa | grep mysql #检查是否安装了mysql
2.rpm -qa | grep mariadb #检查是否安装了mariadb
3.rpm -e xxx #一般使用此命令即可卸载成功
(4.rpm -e --nodeps xxx #卸载不成功时使用此命令强制卸载)
二、安装MySQL
- $ wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
- $ yum -y install mysql57-community-release-el7-10.noarch.rpm
- $ yum -y install mysql-community-server
三、进入MySQL
1.生成初始密码
$ grep "password" /var/log/mysqld.log
2.登录mysql
$ mysql -uroot -p
$ enter your password: 上面获取的初始密码
3.修改Mysql的root用户密码
$ ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
// 若报错
$ set global validate_password_policy=0;
$ set global validate_password_length=6;
$ ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码’;
相关问题
问题:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
解决:
启动mysql服务
$ service mysqld start
3.问题:系统开机自启MySQL
解决:
systemctl enable mysqld
mysql常用命令行:
1、登录mysql
本地:
mysql -u root -p
回车后输入密码; 也可以p后不加空格,直接加密码。回车就登录了
远程:
mysql -hxx.xx.xx.xx -u -pxxx
2、查看数据库:
mysql>show databases;
image
3、连接数据库:
mysql> use db_name;
image.png
4、查看数据表:
mysql> show tables;
image
5.创建表;
创建表的语法:
create table 表名(
字段名1 数据类型(宽度/大小) 约束 ,
字段名2 数据类型(宽度/大小) 约束 ,
...
字段名n 数据类型(宽度/大小) 约束
);
注:约束可以省略,注意每一个字段创建语句后是已逗号结束,最后一个可以省略。
create table MyClass(
id int(4) not null primary key auto_increment,
name char(20) not null,
sex int(4) not null default '0',
degree double(16,2)
);
image.png
6.查看表结构
语法: desc 表名 ;
image.png
-
表的数据操作(记录处理)
1,增加一条记录到person表
语法:
insert into 表名(字段1,字段2,...) values(值1,值2,...);
或
insert into 表名 values(值1,值2,...);
当看到Query OK, 1 row affected(已完成,1列改变)说明插入成功,其他错误提示,请检查sql语句。
2,增加多条记录到person表
语法: insert into 表名 values(),(),(),()....;
[图片上传失败...(image-4ec20b-1530156918957)]
当看到这些信息,说明增加记录完毕。
3,查询person表中的记录
语法: select * from 表名; 或 select 字段1,字段2,字段3 from 表名;
[图片上传失败...(image-c8d35e-1530156918957)]
4,修改person表中记录(修改二毛的年龄)
语法: update 表名 set 修改条件 where 依据条件 ;
注:一定要有where依据条件,否则所有记录都被修改成相同的,切记。
然后,我们用查询语句查询表中所有记录,我会发现二毛的年龄被修改成17
5, 删除person表中记录(删除小毛的记录)
语法: delete from 表名 where 依据条件 ;
然后,我们用查询表中所有记录,会发现小毛那条记录不见了。
后记
如果在执行sql语句时,出现错误提示,请对照自己的sql语句中字母或标点的编写是否有问题。(双引号或单引号都可以)。
如果一开始就报错误,请检查是否有test这个数据库。查看命令语法
在编写sql中,有的地方必须要使用分号结束。检查语句没问题还报错,看看是否用了分号作为结束标志。(登录时不需要分号)
7.查询:select * from table_name where xxx and xxx;
image6、当前选择的数据库:select database();
image7、查询mysql版本:select version();
8、当前时间:select now();或select current_timestamp();
9、打印年月日:SELECT DAY/MONTH/YEAR(CURRENT_DATE);
![image](https://img.haomeiwen.com/i7503725/e46dbfe33f12176b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
10、打印字符:SELECT "I'am danny.yao";
image11、查看表结构:describe <表名>;
12、当前所有连接的详细情况:show full processlist;(没有full,只显示前100个连接)
13、查看状态:show status like '%下面变量%';
Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。
Connections 试图连接MySQL服务器的次数。
Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。
Delayed_writes 用INSERT DELAYED写入的行数。
Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands 执行FLUSH命令的次数。
Handler_delete 请求从一张表中删除行的次数。
Handler_read_first 请求读入表中第一行的次数。
Handler_read_key 请求数字基于键读行。
Handler_read_next 请求读入基于一个键的一行的次数。
Handler_read_rnd 请求读入基于一个固定位置的一行的次数。
Handler_update 请求更新表中一行的次数。
Handler_write 请求向表中插入一行的次数。
Key_blocks_used 用于关键字缓存的块的数量。
Key_read_requests 请求从缓存读入一个键值的次数。
Key_reads 从磁盘物理读入一个键值的次数。
Key_write_requests 请求将一个关键字块写入缓存次数。
Key_writes 将一个键值块物理写入磁盘的次数。
Max_used_connections 同时使用的连接的最大数目。
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。
Open_tables 打开表的数量。
Open_files 打开文件的数量。
Open_streams 打开流的数量(主要用于日志记载)
Opened_tables 已经打开的表的数量。
Questions 发往服务器的查询的数量。
Slow_queries 要花超过long_query_time时间的查询数量。
Threads_connected 当前打开的连接的数量。
Threads_running 不在睡眠的线程数量。
Uptime 服务器工作了多少秒。
14、看表注释,字段注释;
show create table table_name;
show full columns from table_name;
show table status;
MySQL中delimiter的作用
原创 2011年11月18日 15:17:07 阅读 124
在MySQL中,delimiter就是告诉解释器以哪一种符号结束命令。
MySQL中,默认的语句结束符号为分号(;)
但是刚才我在写存储过程的时候,发现,写分号并不能编译通过,于是查找资料发现,了delimiter这个词的作用。
举例来说:
DELIMITER //
CREATE TRIGGER trigger_bbs
BEFORE INSERT ON feedback
FOR EACH ROW BEGIN
SET new.floors = CONCAT((SELECT VIEW FROM bbs WHERE id = new.f_id)+1,'楼');
END //
在这段代码中,如果说我们把delimiter这个词去掉的话,那么,在语句中我们得慎用分号(;)
DELIMITER //
上面这句话的意思就是告诉解释器,要把双斜线(“//”)作为语句结束符号,当遇到(“//”)符号的时候才开始执行。
use mysql #打开mysql数据库
将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip
update user set host='%' where user='root' and host='localhost';
flush privileges; #刷新权限表,使配置生效
然后我们就能远程连接我们的mysql了。