安装
linux
yum -y install mysql mysql-server
or
yum -y install mariadb mariadb-server
设置开机启动
service mysqld start #开启服务
chkconfig mysqld on #设置开机启动
or
systemctl start mariadb
systemctl enable mariadb
查看
ps aux | grep mysql # 查看进程
netstat -an | grep 3306 # 查看端口
设置密码
mysqladmin -uroot password "123" # 设置初始密码
mysqladmin -u root -p"123" password "new" # 修改root密码
登录
mysql # 默认root,没有密码
mysql -u root -p # 指定密码,登录本地
mysql -u root -p "123" -h 192.168.12.23 远程登录 用户为root@192.168.12.23
mysql -P代表端口号,-p代表密码
sql语句规范
- sql命令不区别大小写,字符串常量大写,表名小写
- 命令结束必须有分号
- 可以换行,让复合命令可以提高可读性
SELECT * FROM tb_table
WHERE NAME="YUAN"
- DDL,DML,DCL的区别
- DML(Database Manipulation Language)
SELECT、UPDATE、INSERT、DELETE - DDL(Database Definition Language)
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用 - DCL(Data Control Language)
是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权
力执行DCL
常用命令
# 启动mysql和停止mysql
net start mysql
net stop mysql
# service mysql start
忘记密码怎么办
启动mysql时,跳过授权表
[root@controller ~]# service mysqld stop
[root@controller ~]# mysqld_safe --skip-grant-table &
[root@controller ~]# mysql
mysql> select user,host,password from mysql.user;
+----------+-----------------------+-------------------------------------------+
| user | host | password |
+----------+-----------------------+-------------------------------------------+
| root | localhost | *A4B6157319038724E3560894F7F932C8886EBFCF |
| root | localhost.localdomain | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | localhost.localdomain | |
| root | % | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+----------+-----------------------+-------------------------------------------+
mysql> update mysql.user set password=password("123") where user="root" and host="localhost";
mysql> flush privileges;
mysql> exit
[root@controller ~]# service mysqld restart
[root@controller ~]# mysql -uroot -p123
删除数据库
删除与权限相关的库mysql,所有的授权信息都丢失,主要用于测试数据库或者刚刚建库不久没有授权数据的情况
[root@controller ~]# rm -rf /var/lib/mysql/mysql
[root@controller ~]# service mysqld restart
[root@controller ~]# mysql
配置数据库编码
查看数据库编码
-
mysql > \s
这里我们看到这个编码我们都设置为uft8了
如果只查看当前数据库的编码方式:
show create database db_name
windows下
将安装目录的mydefault.cnf
复制一份进行修改
因为我的系统是linux,故不写windows了
linux下
在我的linux mint下配置
- linux mint my.cnf位置
从中可以看出,总的配置文件在/etc/alternative/my.cnf
中
然后在其中添加如下
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
需要添加的内容
修改数据库编码
alter database db_name character set = utf8
但是基本上不起作用,我也不知道原因
另外一篇mysql中文乱码配置
内容如下:
一、登录MySQL查看用SHOW VARIABLES LIKE ‘character%’;下字符集,显示如下:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
character_set_database和character_set_server的默认字符集还是latin1。
二、最简单的完美修改方法,修改mysql的my.cnf
文件中的字符集键值(**注意配置的字段细节**):
1、在[client]字段里加入default-character-set=utf8,
如下:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
2、在[mysqld]字段里加入
character-set-server=utf8,
如下:
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8
3、在[mysql]字段里加入default-character-set=utf8,
如下:
[mysql]
no-auto-rehash
default-character-set=utf8
修改完成后,service mysql restart重启mysql服务就生效。
注意:[mysqld]字段与[mysql]字段是有区别的。这点在网上没人反馈过。
使用SHOW VARIABLES LIKE ‘character%’;
查看,发现数据库编码全已改成utf8。
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
- 第四步
数据库操作
#创建数据库
create database [if not exists] db_name [character set xxx]
//创建一个数据库对应在磁盘上创建一个文件夹,没有区别
if not exists 如果有的话,就不创建了,不会覆盖原来存在的
#查看数据库
show databases; # 查看全部数据库
show create database db_name;# 查看数据库的创建方式和创建时的信息
#删除数据库
drop db_name
# 查看警告
show warnings
# 修改数据库
alter database db_name # 后面可以添加character set= utf8
# 使用数据库
use db_name注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换
# 查看当前使用的数据库
select database();
数据库数据类型
mysql大致可以分成三种类型:数值,字符,日期
数值
double(4,2)这个类型为double,长度为4,小数位2,整数位2
- 数值类型
字符
- 字符类型
- CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换
- BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。
- BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同
- 有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。
日期格式
- 日期格式
网友评论