MySQL数据库系统


MySQL安装 (源码包安装)

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


安装前工作

安装工具

yum install -y ncurses-devel cmake make gcc

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 -f CMakeCache.txt

2.make ; make install


mysql主配置文件

/etc/my.cnf

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

cp support-files/my-medium.cnf /etc/my.cnf


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

chown -R mysql.mysql /usr/local/mysql

更改PASH变量,方便管理mysql

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

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

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

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

cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig --level 35 mysqld on


初始化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程序

service mysqld start

查看程序是否启动

netstat -anptu | grep mysqd




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

登录数据库

mysql -u root

-p:使用密码

-h:登录远程数据库

修改mysql数据库root密码

mysqladmin -u root -p password '新密码'需输旧密码


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


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

增加命令

CREATE DATABASE benet;新建benet数据库

use benet; 进入benet数据库

CREATE TABLE users(user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT ' ', PRIMARY KEY (user_name));创建表名为users

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

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


删除命令

DELETE FROM users WHERE user_name='lisi';

删除user表中lisi的内容

DROP FROM users; 删除user表中所有内容

DROP TABLE users;删除users

DROP DATABASE benet;删除benet数据库


更改命令

UPDATE mysql.user SETpassword=PASSWORD('123456') WHERE user='root';更改rootpassword


查看命令

show databases;查看所有数据库

use test; 进入test数据库

show tables; 查看数据中的表

describe user;查看user表的信息

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

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

SELECT user,host,password FROM mysql.user WHERE user=''; 查看mysql库中user表中 user,host,passworduser字段为空的行


用户授权

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

flush privileges; 刷新授权信息


备份与恢复

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

备份

mysqldump -u root -p --opt --all-databases >all-data.sql

备份所有数据库

mysqldump -u root -p --database benet > benet.sql

备份benet数据库


还原

mysql -u root -p < all-data.sql

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