第4讲 MySQL服务器的配置与应用
目录 MySQL概述 MySQL的安装 创建数据库 创建表 插入数据 查询数据 更新表 删除表 使用show命令 对表的其他操作 用户权限管理 MySQL数据库的备份与恢复
MySQL概述 MySQL是一个高性能、多线程、多用户、建立在客户/服务器结构上的开源关系型数据库管理系统
MySQL的优点 性能高效而稳定 开放源代码 多用户支持 开放性 广泛的应用程序支持 支持事务处理、行锁定、子查询、外键和全文检索等功能 可以有效地满足50~1000个并发用户的访问 开放性 支持ANSI SQL-99标准,适用于多种操作系统 广泛的应用程序支持 有C、C++、Java、Perl、PHP和Python等多种客户工具和API的支持 支持事务处理、行锁定、子查询、外键和全文检索等功能 支持大数据库处理 可对某些包含50000000个记录的数据库使用MySQL 有灵活且安全的权限和口令系统,并且允许对其他主机的认证
MySQL的安装 查看是否安装了MySQL 相关软件说明 MySQL的配置文件:/etc/my.cnf 启动MySQL数据库服务器 rpm -qa | grep mysql 相关软件说明 mysql:客户程序和共享库 mysqlclient:开发MySQL客户端程序时使用的库和头文件 mysql-server:MySQL数据库服务器 mysql-bench: MySQL数据库基准和性能测试工具 mysql-devel:开发MySQL程序时使用的库和头文件 MySQL的配置文件:/etc/my.cnf 启动MySQL数据库服务器 service mysqld start
连接数据库 使用mysql命令登录MySQL数据库服务器 语法:mysql [-h 主机名或IP地址] [-u 用户名] [-p 口令] 例子:mysql -uroot -p 注意:root的密码默认为空
创建数据库(1) 使用show databases能够查看MySQL系统中存在的数据库
创建数据库(2) 使用create database创建数据库 使用use命令选择数据库 删除数据库 MySQL> drop database accounts;
创建表 使用create table命令创建表 删除表 mysql> drop table acc;
创建表(2) 查看当前数据库中的所有表
创建表(3) 使用describe(可以缩写为desc)命令查看表的结构
插入数据(1) acc表的样例数据 acc_id username password ts 1034033 jsmith smithy 20021014112438 1034055 jdoe doey 20021014112501 1034067 jthompson james2 20021014113403 1034089 sstanford stanford 20021014113407 1034123 blewis lewis 20021014112252 1034154 ysheets sheets 20021014113416 1034034 jime NULL 20021014112415 1034546 jjmyers 20021014113422
插入数据(2) 使用insert命令插入数据 使用NULL值
查询数据(1) select命令的格式
查询数据 (2)
查询数据 (3)
查询数据 (4)
查询数据:排序
程序数据:降序
查询数据:别名
查询数据:like(1)
查询数据:like(2)
查询数据 将表的数据输出到文本文件 行计数
更新数据
删除数据
使用show命令(1) show databases
使用show命令(2) show tables
重命名表
增加列
改变列定义
用户权限管理 添加用户和权限 删除权限 修改用户口令 修改MySQL管理员root的口令
添加用户 (1) 使用grant命令添加用户
添加用户 (2) 权限( privileges) ALL — 授予用户如下的所有权限 ALTER — 改变表、列和索引 CREATE — 创建数据库和表 DELETE — 删除表中的记录 DROP — 丢弃和删除表和数据库 FILE — 读、写文件 INDEX — 添加、删除索引 INSERT — 向表中插入记录 PROCESS — 查看和停止系统进程
添加用户 (3) REFERENCES — 当前的MySQL还不能使用 RELOAD — 使用FLUSH语句 SELECT — 从表中查询记录 SHUTDOWN — 关闭MySQL数据库 UPDATE — 更新表中的记录 USAGE — 连接到MySQL数据库,但是没有权限
添加用户:例子 例1:创建口令为 99hjc的用户john,该用户在数据库myDB的所有表都有select和insert权限,并且能够从任何主机连接到数据库服务器 mysql> grant select, insert on myDB.* to john@”%” identified by “99hjc”; 查看用户john的权限 mysql> show grants for ' john '@'%';
添加用户:例子 例2:添加口令为45sdg11的用户jane, 该用户在数据库myCompany的表employees上具有ALL权限,并且只能从特定的主机上连接数据库 mysql> grant all on myCompany.employees to jane@janescomputer.company.com identified by “45sdg11”; 例3: mysql> grant all on myCompany.employees to jane@’63.124.45.2’ identified by “45sdg11”;
回收权限 mysql> revoke insert on myDB.* from john@”%”; revoke命令的语法 回收用户john在数据库myCompany的insert权限 mysql> revoke insert on myDB.* from john@”%”;
修改用户口令(1):使用set password 以root帐号登录mysql数据库管理系统 mysql -uroot -p 使用set password修改帐号myuser1的口令为mypw2 mysql> set password for 'myuser1'@'localhost' = password('mypw2'); 重新装载grant表,使新口令生效 mysql> flush privileges;
修改用户口令(2):使用update user 以root帐号登录mysql数据库管理系统 mysql -uroot -p 选择mysql数据库 mysql> use mysql 使用update修改帐号myuser1的口令为mypw2 mysql> update user set password=PASSWORD('mypw2') where user=‘myuser1’; 重新装载grant表,使新口令生效 mysql> flush privileges;
修改用户口令(3):使用update user 以root帐号登录mysql数据库管理系统 mysql -uroot -p 选择mysql数据库 mysql> use mysql 使用update修改帐号myuser1的口令为mypw2 mysql> update user set password=PASSWORD('mypw2') where user=‘myuser1’; 重新装载grant表,使新口令生效 mysql> flush privileges;
修改MySQL管理员root的口令 在初始安装MySQL服务器时,管理员root的密码为空 使用mysqladmin命令修改root用户的密码 例:将root用户密码改为kswTG23a mysqladmin -u root password kswTG23a 如果已经为root用户设置了密码,当再次修改其密码时,需要使用如下格式的mysqladmin命令 mysqladmin -u root -p password 新密码字符串
忘记root口令时的挽救方法 #/etc/rc.d/init.d/mysql stop #/usr/local/mysql/bin/mysqld_safe --skip-grant-table & # /usr/local/mysql/bin/mysql -u root mysql> use mysql mysql> update user set password=password('newpassword') where user='root'; mysql> flush privileges;
MySQL数据库的备份与恢复 使用mysqldump命令备份MySQL数据库 恢复数据库 cd /var/lib/mysql mysqldump -uroot -p --opt sales > sales_bak030630.sql 恢复数据库 mysql -uroot -p mysql> drop database sales;(删除sales数据库) mysql> use sales;(打开sales,出错) mysql> create database sales;(重新创建数据库sales) mysql> \q cd /var/lib/mysql mysql -uroot -p sales < sales_bak030630.sql mysql -uroot -p(测试sales恢复情况) mysql> use sales; mysql> show tables;