MySQL数据库系统
MySQL安装 (源码包安装)
卸载系统中已存在的MySQL的rpm版软件
安装前工作
安装工具
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';更改root的password值
查看命令
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,password中user字段为空的行
用户授权
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后面跟上数据库名