08、MySQL数据库基本管理
Mysql是一个典型的C/S服务结构,它自带客户端,例如:mysql、mysqladmin和mysqldump等。
1、设置Mysql密码
初始状态下,管理员root的密码为空或者是随机生成的,而且只允许本机登录。一般情况下,我们安装好Mysql之后的第一件事就是修改默认的密码。
# 设置初始密码 由于原密码为空,因此-p可以不用
[root@localhost ~]# mysqladmin -uroot password "123"
# 修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码
[root@localhost ~]# mysqladmin -uroot -p"123" password "456"
2、MySQL连接工具与方式
Mysql的连接方式和工具有很多种,这里我们详细讲解一下。
2.1、MySQL自带的连接命令工具
Mysql自带的连接工具叫`mysql`,下面我们来详细介绍一下mysql连接工具。
mysql
#常见的特定于客户机的连接选项:
-u: 指定用户 mysql -uroot
-p: 指定密码 mysql -uroot -p567
-h: 指定主机域 mysql -uroot -p567 -h127.0.0.1
-P: 指定端口 mysql -uroot -p567 -h127.0.0.1 -P3307
-S: 指定socket文件 mysql -uroot -p567 -S /tmp/mysql.sock
-e: 指定SQL语句(库外执行SQL语句) mysql -uroot -p567 -e "show databases;"
--protocol: 指定连接方式 mysql --protocol=TCP --protocol=socket
登录Mysql服务器
#1.正确登录命令
[root@localhost ~]# mysql -uroot -p123
[root@localhost ~]# mysql -u root -p123
[root@localhost ~]# mysql # 以root用户登录本机,密码为空
#2.错误登录命令
[root@localhost ~]# mysql -u root -p 123 # -p选项与密码之间不要有空格
连接方式
1. TCP/IP的连接方式
2. 套接字连接方式,socket连接
3. 默认使用socket方式连接
#查看连接方式
mysql> status;
--------------
Connection: Localhost via UNIX socket
3.举例:
3.1.TCP/IP连接,通常带有-h选项的都是TCP/IP链接
mysql -uroot -p -h127.0.0.1 -P 端口号
mysql -uroot -p -h127.0.0.1 -S /tmp/mysql.sock
3.2.socket连接
mysql -uroot -p123(默认连接方式,socket)
4.注意:
4.1.因为使用TCP/IP连接,需要建立三次握手
4.2.不一定-h都是tcp,-hlocalhost是socket连接
mysql -uroot -p -hlocalhost
2.2、第三方工具连接
我们常常再工作中,是不使用Mysql自带的数据库连接工具来连接数据库的,一般情况下我们使用的是第三方数据库连接工具来连接Mysql的。其中我们最常用的数据库连接工具是navicat来连接数据库,这个数据库连接工具的功能非常强大,非常适合用来操作数据库。
# 在链接之前,必须创建远程连接用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'Oldboy@666' WITH GRANT OPTION;
ALL PRIVILEGES : 所有的权限
*.* : 正对于所有的库所有的表
root : 用户名
localhost : 可以链接的IP(%代表所有的IP)
FLUSH PRIVILEGES;
下面我们介绍一下naticat数据库连接工具的使用。
3、MySQL配置文件
MySQL配置文件的作用是配置MySQL,使MySQL按照我们指定的方式健康运行。
注:配置文件中的注释可以有中文,但是配置项中不能出现中文。
1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效
[mysqld]
;skip-grant-tables
port=3306
character_set_server=utf8
default-storage-engine=innodb
innodb_file_per_table=1
#解压的目录
basedir=E:\mysql-5.7.19-winx64
#data目录
datadir=E:\my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据
#2. 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
[client]
port=3306
default-character-set=utf8
user=root
password=123
#3. 只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
[mysql]
;port=3306
;default-character-set=utf8
user=root
password=4573
#!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准
4、统一字符集编码
使用过数据库的小伙伴应该清楚,统一字符集编码的必要性非常大,当我们使用统一的字符集编码时数据库查出来的数据才不会错。
- 修改系统字符集编码
#1.命令行临时修改 :
LANG=us_EN.UTF-8
LANG=zh_CN.UTF-8
临时修改报错命令为应文 : LANG=us_EN.UTF-8
#2.修改系统字符集
Centos6 永久修改:[root@localhost ~]# vim /etc/sysconfig/i18n
Centos7 永久修改:[root@localhost ~]# vim /etc/locale.conf
- 编译之前指定
cmake .
-DDEFAULT_CHARSET=UTF8 \
-DDEFAULT_COLLATION=UTF8_GENERAL_CI
- 配置文件指定
#1.修改配置文件
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
#2. 重启服务
#3. 查看修改结果:
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.07 sec)
校验规则: utf8_general_ci
1)ci:大小写不敏感
2)cs或bin:大小写敏感
#一个表里面不可能出现同名不同大小写的字段
#查看校验规则
mysql> show collation;
+----------------------