MySQL数据库系统


MySQL安装(源码包安装)

卸载系统中已存在的MySQLrpm版软件


安装前工作


创建mysql程序用户

useradd-s/sbin/nologin


安装工具

yuminstall-yncurses-develcmakemakegcc

gcc-c++


1.配置

cmake\

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\

-DMYSQL_DATADIR=/home/mysql/\

-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock\

-DWITH_MYISAM_STORAGE_ENGINE=1\

-DWITH_INNOBASE_STORAGE_ENGINE=1\

-DWITH_ARCHIVE_STORAGE_ENGINE=1\

-DWITH_BLACKHOLE_STORAGE_ENGINE=1\

-DENABLED_LOCAL_INFILE=1\

-DDEFAULT_CHARSET=utf8\

-DDEFAULT_COLLATION=utf8_general_ci\

-DEXTRA_CHARSETS=all\

-DWITH_SSL=system\

-DMYSQL_TCP_PORT=3306\

-DENABLE_DOWNLOADS=1\

-DWITH_SSL=bundled


如果在配置的时候报错,之后重新配置的时候需要清除缓存文件,在接着安装

rm-fCMakeCache.txt

2.make;makeinstall


mysql主配置文件

/etc/my.cnf

在源码包所在目录的support-files目录中有配置文件的模板,可以拷过去直接使用

cpsupport-files/my-medium.cnf/etc/my.cnf


更改安装目录权限,使mysql程序有权限管理

chown-Rmysql.mysql/usr/local/mysql

更改PASH变量,方便管理mysql

exportPATH=$PATH:/usr/local/mysql/bin/

(要永久生效可以写在~/.bash_profile等配置文件中)

mysql加为系统程序,方便管理

在源码包所在目录的support-files目录中有mysql的服务脚本文件mysql.server

cpsupport-files/mysql.server/etc/init.d/mysqld

chkconfig--addmysqld

chkconfig--level35mysqldon


初始化mysql

/usr/local/mysql/scripts/mysql_install_db\

--user=mysql\

--ldata=/var/lib/mysql\

--basedir=/usr/local/mysql\

--datadir=/home/mysql

(初始化脚本mysql_install_db位于安装目录的scripts文件夹中,--user指定用户,--ldata指定链接文件,--basedi指定基本目录,--datadir指定数据目录)


因为配置时指定了-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock可实际此文件在/var/lib/mysql/mysql.sock目录下,所以我要给它设置一个链接

ln-s/var/lib/mysql/mysql.sock/home/mysql/mysql.sock


编辑服务脚本文件/etc/init.d/mysqld文件,指定安装的目录和数据文件保存文件的目录

vi/etc/init.d/mysqld

basedir=/usr/local/mysql

datadir=/home/mysql


启动mysql程序

servicemysqldstart

查看程序是否启动

netstat-anptu|grepmysqd




以上步骤做完后,mysql的安装和初始化做好了,就可以使用了

登录数据库

mysql-uroot

-p:使用密码

-h:登录远程数据库

修改mysql数据库root密码

mysqladmin-uroot-ppassword'新密码'需输旧密码


数据库的提示符为mysql>,命令大小写不敏感;且每个命令都以分号;号结尾,若没以分号结尾,将代表命令没有结束,只是强制换行而已,等同于linux命令行中的\键。


下面是mysql环境下的一些命令

增加命令

CREATEDATABASEbenet;新建benet数据库

usebenet;进入benet数据库

CREATETABLEusers(user_nameCHAR(16)NOTNULL,user_passwdCHAR(48)DEFAULT'',PRIMARYKEY(user_name));创建表名为users

user_name表示第1行名称,“char(16)”表示类型为字符串,最大为16数值,“notnull”表示值不能为空;user_passwd”表示第2行,DEFAULT''表示可以为空primarykey(user_name)表示主键名

INSERTINTOusers(user_name,user_passwd)VALUES('zhangsan',PASSWORD('123456'));users表中插入一条内容,如果插入的每个字段都包含内容,(user_name,user_passwd)可以省略


删除命令

DELETEFROMusersWHEREuser_name='lisi';

删除user表中lisi的内容

DROPFROMusers;删除user表中所有内容

DROPTABLEusers;删除users

DROPDATABASEbenet;删除benet数据库


更改命令

UPDATEmysql.userSETpassword=PASSWORD('123456')WHEREuser='root';更改rootpassword


查看命令

showdatabases;查看所有数据库

usetest;进入test数据库

showtables;查看数据中的表

describeuser;查看user表的信息

select*fromuser;查看user表里的内容

selectuserfromuser;查看user表里的user这个用户字段里有哪些用户

SELECTuser,host,passwordFROMmysql.userWHEREuser='';查看mysql库中user表中user,host,passworduser字段为空的行


用户授权

GRANTselectONauth.*TO'tom'@'localhost'IDENTIFIEDBY'密码'新建tom用户,对其授权只能查询以auth开头的所有表,或auth中的所有表,且只能在localhost登陆,可以为IP

flushprivileges;刷新授权信息


备份与恢复

备份和恢复是在bash环境下执行,是linux命令,而不是在mysql环境下

备份

mysqldump-uroot-p--opt--all-databases>all-data.sql

备份所有数据库

mysqldump-uroot-p--databasebenet>benet.sql

备份benet数据库


还原

mysql-uroot-p

all-data.sql为备份的文件,如果只是某个数据库的备份,可以在-p后面跟上数据库名