Mysql服务安装
基于系统的安装安装系统的时候选择安装
Msql----客户端
Mysql-server-----服务器
Mysql-devel---开发组件
基于mysql官方的安装
源码编译
通用二进制包--------解压做简单配置就能使用
Rpm包
这里使用通用二进制包安装
Rpm包安装的mysql,数据目录为/var/lib/mysql
生产中,最好将mysql放在一个逻辑卷中。
Mysql的通用二进制程序包
mysql-5.5.33-linux2.6-x86_64.tar.gz
Mysql的源码包
mysql-5.5.33.tar.gz
mysql-5.5.33.zip
我们要用到的是mysql-5.5.33-linux2.6-x86_64.tar.gz
安装步骤
1,下载mysql-5.5.33-linux2.6-x86_64.tar.gz包
2,最好将mysql的数据文件放在一个独立的逻辑卷中,所以,新建逻辑卷mysql
# mkdir /mysql
# mount /dev/myvg/mysql /mysql
新建目录mysql,并挂在逻辑卷到该目录下
# mkdir /mysql/data
创建目录,用来存放数据但需要修改目录的权限,属主,属组都为mysql,这时需要新建一个用户,mysql,不需要mysql登录系统,所以,新建mysql用户为系统用户。
#useradd -r mysql
# chown -R mysql:mysql data -----R 递归
3,解压mysql-5.5.33-linux2.6-x86_64.tar.gz包到/usr/local
# tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local/
4,到/usr/local下,为解压后的包创建连接文件
# cd /usr/local
# ln -sv mysql-5.5.33-linux2.6-x86_64 mysql
5,查看一下mysql包
# cd mysql
# ls
bin COPYING data docs include INSTALL-BINARY lib man mysql-test README scripts share sql-bench support-files
Data是mysql包原有的数据目录,但我们现在是将它另外放了一个地方,即/mysql/data.因此,这个目录没用了。
6,修改mysql包下的文件的文件属性
# chown -R root:mysql *
7,配置文件
# cd support-files/-----------样例配置文件
# ls
binary-configure config.small.ini my-innodb-heavy-4G.cnf my-small.cnf mysql.server
config.huge.ini magic my-large.cnf mysqld_multi.server ndb-config-2-node.ini
config.medium.ini my-huge.cnf my-medium.cnf mysql-log-rotate solaris
# cp my-large.cnf /etc/my.cnf----------mysql的配置文件独特的格式
8,编辑配置文件,添加属性
thread_concurrency = 2------------------单核两线程,单核为2,双核就给4
datadir = /mysql/data-----数据库文件目录
socket = /tmp/mysql.sock-------这个记录的功能是让一台机子可以自己当服务器,自己当客户端。
9,装载服务程序
# cp mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# service mysqld start
Starting MySQL....The server quit without updating PID file[FAILED]/data/luliming.icy.pid).
启动报错。
10,排错
错误原因,服务初始化失败,修改初始化步骤。这种安装步骤系统不会自动初始化,需要手动进行。
11,手动初始化
# cd /usr/local/mysql/scripts/
# ls
mysql_install_db---------------------用来生成mysql数据元数据的脚本文件,即初始化程序文件
# ./mysql_install_db --help-----------可以看到要指定的选项,有两个选项需要指定
# cd ..
# scripts/mysql_install_db --user=mysql --datadir=/mysql/data----------注意,这里必须在/mysql目录下执行,否则,会报错。
12,初始化成功,启动服务
# service mysqld start
Starting MySQL... [ OK ]
13,再看数据文件/mysql/data
# ls /mysql/data
mysql mysql-bin.000001 mysql-bin.000002 mysql-bin.index performance_schema test
mysql performance_schema test-----------这三个文件其实就是数据库了
14,启动客户端
# mysql
-bash: mysql: command not found
报错,说明客户端工具还不能使用。
15,启用客户端工具
# ls bin
innochecksum mysqlaccess.conf mysqld mysqlhotcopy mysql_tzinfo_to_sql
msql2mysql mysqladmin mysqld-debug mysqlimport mysql_upgrade
myisamchk mysqlbinlog mysqld_multi mysql_plugin mysql_waitpid
myisam_ftdump mysqlbug mysqld_safe mysql_secure_installation mysql_zap
myisamlog mysqlcheck mysqldump mysql_setpermission perror
myisampack mysql_client_test mysqldumpslow mysqlshow replace
my_print_defaults mysql_client_test_embedded mysql_embedded mysqlslap resolveip
mysql mysql_config mysql_find_rows mysqltest resolve_stack_dump
mysqlaccess mysql_convert_table_format mysql_fix_extensions mysqltest_embedded
这里可以看到mysql的各种命令,只需要修改环境变量,就可以将它们全部唤醒。
16,唤醒mysql客户端工具
# vim /etc/profile.d/mysql.sh
在里面写上
Export PATH=/usr/local/mysql/bin/:$PATH
保存退出
# . /etc/profile.d/mysql.sh
这样,mysql客户端工具就可以使用了。
# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.33-log MySQL Community Server (GPL)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
17,连接头文件,便于访问
# ln -sv /usr/local/mysql/include /usr/include/mysql
18,设置帮助文件
# vim /etc/man.config
写上MANPATH /usr/local/mysql/man保存退出
19,导出库文件
# vim /etc/ld.so.conf.d/mysql.conf
写上/usr/local/mysql/lib
# ldconfig -v | grep mysql----------------刷新系统库文件,显示与mysql有关的信息。
可以看到库文件已经导出
Mysql命令
1,创建用户
用户或主机可以使用通配符:
%:匹配任意长度的任意字符;
_: 匹配任意单个字符;
mysql> create user 'liming'@'172.16.%.%’ identified by "liming";
2,显示服务器参数变量
mysql> show [global|session]variables;
3,显示服务器状态变量
mysql> show [global|session] status;
4,客户端命令:不需语句结束符
mysql> help
服务器端命令:特指SQL语句, 必须有语句结束符,默认为分号;
mysql> help COMMAND
5,用户授权及创建
GRANT ALL PRIVILEGES ON dbname.tablename TO username@host [IDENTIFIED BY 'password'];
GRANT ALL PRIVILEGES ON *.* TO ‘root’@’172.16.0.0’[IDENTIFIED BY 'password'];
对172.16.0.0网段上的所有主机中root用户授权可以访问服务器上所有数据库的所有表。
6,修改用户密码:
1、mysql> set password for username@host=PASSWORD('password');
2、# mysqladmin -uusername password 'password' -p
7,删除用户:drop user username@host;--------删除那个主机上的哪个用户。
8,mysql>
quit, \q
delimiter, \d
go, \g
use, \u
ego, \G
system, \!
status, \s
后者是前者的简写。
9,mysql:执行方式有两种
交互式方式:
-h, --host=
-u, --user=
-p, --password=
-D db_name, --database=
-e 'SQL_Statement;'
批处理模式:
使用sql脚本;
mysql OPTIONS < script.sql
mysql> source /path/to/script.sql
10,数据库管理系统RDBMS的构成
表
视图
索引
用户
约束
事务
存储过程
存储函数
触发器
事件调度器
11,显示所支持的所有字符集:
mysql> show character set;
12,显示所有字符集的排序规则:
mysql> show collation;
13,字段属性:字段名(不区分大小写), 数据类型, 修饰符, 约束
关系型数据库:
Constraint:
主键:primary key
不能为空,惟一;
惟一键:uniq key
可以为空,惟一;
外键:foreign key
引用性约束
检查性约束:
0<age<150
数据类型:
字符型:
CHAR(n)
VARCHAR(n)
BINARY(n)
VARBINARY(n)
TEXT
BLOB
修饰符:NOT NULL, DEFAULT ''
数值型:
精确数值型:
整型:
TINYINT: 1byte, -128, 127 0,255
SMALLINIT: 2bytes, -32768, 32767 0,65535
MEDIUMINT: 3bytes, 0,2^24
INT: 4bytes, 0,2^32
BIGINT: 8bytes, 0,2^64
DECIMAL:
修饰符:NOT NULL, DEFAULT '', UNSIGNED, AUTO_INCREMENT
近似数值型:
浮点型:
FLOAT
DOUBLE
REAL
修饰符:NOT NULL, DEFAULT ''
日期时间型:
DATE
TIME
DATETIME
YEAR(2), YEAR(4)
TIMESTAMP
修饰符:NOT NULL, DEFAULT ''
布尔型
内置类型:
ENUM, SET
修饰符:NOT NULL, DEFAULT ''
Mon, Tue, Wed,
Mmm
14,创建一个表,事例
CREATE TABLE students (Name CHAR(30) NOT NULL, id TINYINT UNSIGNED, Age TINYINT UNSIGNED, Class VARCHAR(20) NOT NULL, PRIMARY KEY(Name))
15,在表中插入数据
INSERT INTO table(字段,字段) values(‘’,‘’);
mysql> insert into user(user,host) values('luliming','172.16.1.1');
为每个字段插入数据时,不需要写字段。
mysql> insert into uservalues('luliming','172.16.1.1');
批量插入
mysql> insert into user (user,host) values ('liming','172.16.1.2'),('luming','172.16.1.3');
16,查询某个字段
SELECT 字段 FROM 表 WHERE ;
mysql> select user,host from user;
mysql> select user,host from user where user='root';
17,更新字段
UPDATE 表名 SET 字段名=值 WHERE;
mysql> update user set user='shenlong' where user='luliming';
18,删除某个字段
DELETE FROM 表名 WHERE ;
mysql> delete form user where user='shenlong';
19,sql语言
DDL:data defination language 数据对象定义语言
CREATE, DROP, ALTER
DML:data manapulation language 数据操作语言
INSERT, DELETE, SELECT, UPDATE
DCL:data contorl language 数据控制语言
GRANT, REVOKE授予,收回权限
20,正则表达式
Select 字段 from 表 where 字段 rlike 表达式
mysql> SELECT * from test where user RLIKE '.*lu.*';
21,为管理员加密
mysql> set password for 'root'@'localhost'=password('redhat');
练习题
MySQL基础操作练习(所属的库叫做testdb):
1、新建如下表(包括结构和内容):
ID Name Age Gender Course
1 Ling Huchong 24 Male Hamogong
2 Huang Rong 19 Female Chilian Shenzhang
3 Lu Wushaung 18 Female Jiuyang Shenggong
4 Zhu Ziliu 52 Male Pixie Jianfa
5 Chen Jialuo 22 Male Xianglong Shiba Zhang
CREATE TABLE tb1 (ID TINYINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, Name CHAR(30) NOT NULL UNIQUE KEY, Age TINYINT UNSIGNED, Gender CHAR(1) DEFAULT 'M', Course VARCHAR(50) NOT NULL);
2、完成如下操作
(1)找出性别为女性的所有人;
(2)找出年龄大于20的所有人;
(3)修改Zhu Ziliu的Course为Kuihua Baodian;
(4)删除年龄小于等于19岁的所有人;
(5)创建此表及所属的库;
(6)授权给testuser对testdb库有所有访问权限;
mysql> SELECT name FROM students WHERE Gender='Female';
mysql> SELECT name FROM students WHERE Age>20;
mysql> UPDATE students SET Course='Kuihua Baodian' WHERE name='Zhu Ziliu';
mysql> DELETE FROM students WHERE Age<=19;
mysql> GRANT ALL ON testdb.* TO 'testuser'@'%';