mysql

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

Datamysql包原有的数据目录,但我们现在是将它另外放了一个地方,即/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修改用户密码:

1mysql> set password for username@host=PASSWORD('password');

2# mysqladmin -uusername password 'password' -p

7删除用户:drop user username@host;--------删除那个主机上的哪个用户。

8mysql>

quit, \q

delimiter, \d

go, \g

use, \u

ego, \G

system, \!

status, \s

后者是前者的简写。

9mysql:执行方式有两种

交互式方式:

-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';

19sql语言

DDLdata defination language 数据对象定义语言

CREATE, DROP, ALTER

DMLdata 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 ZiliuCourseKuihua Baodian;

(4)删除年龄小于等于19岁的所有人;

(5)创建此表及所属的库;

(6)授权给testusertestdb库有所有访问权限;

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'@'%';


你可能感兴趣的:(mysql)