mysql之一:系统准备及安装
文章目录
第一章 什么是Mysql
MyQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
第二章 操作系统优化
1. 内存准备
2. 内核准备
3. 网卡准备
4. 硬盘准备
第三章 安装Mysql
1、安装前知识准备
用户名:mysql
安装目录:/usr/local/mysql-5.5
数据库目录:/data/mysql/data
源码包:mysql-5.5.60.tar.gz
2、安装准备
#1. 下载源码包 [http://mirrors.sohu.com/mysql/](http://mirrors.sohu.com/mysql/)
wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.60.tar.gz
#2. 安装编译所需文件或程序
yum install gcc gcc-c++ cmake ncurses-devel bison git
#3. 添加用户
useradd -s /sbin/nologin mysql
#4. 建立所需目录
mkdir -p /data/mysql/data && chown -R mysql:mysql /data/mysql
3 、编译安装配置
cd
tar xzvf mysql-5.5.60.tar.gz
cd mysql-5.5.60
cmake
-DMYSQL_USER=mysql \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DINSTALL_DATADIR=/data/mysql/data \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1
注:如果此处编译错误,请先解决错误,然后再重新解压缩mysql包,再进入解压后的mysql执行上次 的操作
参数说明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录
-DMYSQL_DATADIR=/usr/local/mysql/data //数据库存放目录配置mysql引擎
-DWITH_MYISAM_STORAGE_ENGINE=1 //安装myisam存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 //安装innodb存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 //安装archive存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 //安装blackhole存储引擎
-DENABLED_LOCAL_INFILE=1 //允许从本地导入数据配置字符集
-DDEFAULT_CHARSET=utf8 //使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci //校验字符
-DEXTRA_CHARSETS=all //安装所有扩展字符集配置端口号
-DMYSQL_TCP_PORT=3306 //MySQL监听端口
配置用户名
-DMYSQL_USER=mysql //MySQL用户名
其他参数:
-DWITH-EMBEDDED_SERVER=1 //编译成embedded MySQL library (libmysqld.a)
-DSYSCONFDIR=/etc //MySQL配辑文件
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock //Unix socket 文件路径
-DWITH_READLINE=1 //快捷键功能
-DWITH_SSL=yes //SSLmysql扩展引擎安装
-DWITH_MEMORY_STORAGE_ENGINE=1 //安装memory存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 //安装frderated存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 //安装数据库分区mysql插件安装以及路径配置
-DINSTALL_PLUGINDIR=/usr/local/mysql/plugin //插件文件及配置路径
注:CMAKE 配置参考 常规参数介绍
4. 编译安装
make && make install
chown -R mysql:mysql /usr/local/mysql5.5/
/** 设置mysql配置文件 **/
mv /root/mysql-5.5.60/support-files/my-large.cnf /etc/my.cnf
/** 设置mysql启动路径 **/
mv /root/mysql-5.5.60/support-files/mysql.server /etc/init.d/mysqld
/** 修改启动命令权限 **/
chmod a+x /etc/init.d/mysqld
/** 开机启动 **/
chkconfig --level 345 mysqld on
/**设置环境变量 **/
echo "export PATH=/usr/local/mysql5.5/bin/:$PATH" >> /etc/profile
/** 重新加载环境变量文件 **/
source /etc/profile
/** 设置mysql相关配置 **/
/usr/local/mysql5.5/scripts/mysql_install_db \
--user=mysql \
--defaults-file=/etc/my.cnf \
–-basedir=/usr/local/mysql5.5 \
--datadir=/data/mysql/data
5. 修改mysql配置文件
vim /etc/my.cnf
/** 文件末尾添加 **/
basedir=/usr/local/mysql5.5
datadir=/data/mysql/data
6. 创建mysql管理员
/usr/bin/mysqladmin -u root password 'z'
3.7 启动与关闭MySQL
mysqld_safe& 启动mysql
mysqladmin -u root shutdown 关闭mysql
mysqlshow 显示mysql中的数据库列表
mysqladmin ping 显示mysql是否正在工作
mysqladmin version 显示mysql的版本
8. 连接数据库:
mysql -u root -p -P port
9. 权限修改
grant ALL on *.* to root@"%" identified by "";
10 用户和权限管理
-- root密码重置
1. 停止MySQL服务
2. [Linux] /usr/local/mysql/bin/safe_mysqld --skip-grant-tables &
[Windows] mysqld --skip-grant-tables
3. use mysql;
4. UPDATE `user` SET PASSWORD=PASSWORD("密码") WHERE `user` = "root";
5. FLUSH PRIVILEGES;
用户信息表:mysql.user
-- 刷新权限
FLUSH PRIVILEGES;
-- 增加用户
CREATE USER 用户名 IDENTIFIED BY [PASSWORD] 密码(字符串)
- 必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。
- 只能创建用户,不能赋予权限。
- 用户名,注意引号:如 'user_name'@'192.168.1.1'
- 密码也需引号,纯数字密码也要加引号
- 要在纯文本中指定密码,需忽略PASSWORD关键词。要把密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD
-- 重命名用户
RENAME USER old_user TO new_user
-- 设置密码
SET PASSWORD = PASSWORD('密码') -- 为当前用户设置密码
SET PASSWORD FOR 用户名 = PASSWORD('密码') -- 为指定用户设置密码
-- 删除用户
DROP USER 用户名
-- 分配权限/添加用户
GRANT 权限列表 ON 表名 TO 用户名 [IDENTIFIED BY [PASSWORD] 'password']
- all privileges 表示所有权限
- *.* 表示所有库的所有表
- 库名.表名 表示某库下面的某表
GRANT ALL PRIVILEGES ON `pms`.* TO 'pms'@'%' IDENTIFIED BY 'pms0817';
-- 查看权限
SHOW GRANTS FOR 用户名
-- 查看当前用户权限
SHOW GRANTS; 或 SHOW GRANTS FOR CURRENT_USER; 或 SHOW GRANTS FOR CURRENT_USER();
-- 撤消权限
REVOKE 权限列表 ON 表名 FROM 用户名
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户名 -- 撤销所有权限
-- 权限层级
-- 要使用GRANT或REVOKE,您必须拥有GRANT OPTION权限,并且您必须用于您正在授予或撤销的权限。
全局层级:全局权限适用于一个给定服务器中的所有数据库,mysql.user
GRANT ALL ON *.*和 REVOKE ALL ON *.*只授予和撤销全局权限。
数据库层级:数据库权限适用于一个给定数据库中的所有目标,mysql.db, mysql.host
GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。
表层级:表权限适用于一个给定表中的所有列,mysql.talbes_priv
GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。
列层级:列权限适用于一个给定表中的单一列,mysql.columns_priv
当使用REVOKE时,您必须指定与被授权列相同的列。
-- 权限列表
ALL [PRIVILEGES] -- 设置除GRANT OPTION之外的所有简单权限
ALTER -- 允许使用ALTER TABLE
ALTER ROUTINE -- 更改或取消已存储的子程序
CREATE -- 允许使用CREATE TABLE
CREATE ROUTINE -- 创建已存储的子程序
CREATE TEMPORARY TABLES -- 允许使用CREATE TEMPORARY TABLE
CREATE USER -- 允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。
CREATE VIEW -- 允许使用CREATE VIEW
DELETE -- 允许使用DELETE
DROP -- 允许使用DROP TABLE
EXECUTE -- 允许用户运行已存储的子程序
FILE -- 允许使用SELECT...INTO OUTFILE和LOAD DATA INFILE
INDEX -- 允许使用CREATE INDEX和DROP INDEX
INSERT -- 允许使用INSERT
LOCK TABLES -- 允许对您拥有SELECT权限的表使用LOCK TABLES
PROCESS -- 允许使用SHOW FULL PROCESSLIST
REFERENCES -- 未被实施
RELOAD -- 允许使用FLUSH
REPLICATION CLIENT -- 允许用户询问从属服务器或主服务器的地址
REPLICATION SLAVE -- 用于复制型从属服务器(从主服务器中读取二进制日志事件)
SELECT -- 允许使用SELECT
SHOW DATABASES -- 显示所有数据库
SHOW VIEW -- 允许使用SHOW CREATE VIEW
SHUTDOWN -- 允许使用mysqladmin shutdown
SUPER -- 允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections。
UPDATE -- 允许使用UPDATE
USAGE -- “无权限”的同义词
GRANT OPTION -- 允许授予权限
3.10 备份与还原
3.10.1 导出
mysqldump -uroot -p manager > c:/manager.sql #注意:最后不要加任何东西
– 导出
mysqldump [options] db_name [tables]
mysqldump [options] —database DB1 [DB2 DB3…]
mysqldump [options] --all–database
- 导出一张表
mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql)- 导出多张表
mysqldump -u用户名 -p密码 库名 表1 表2 表3 > 文件名(D:/a.sql)- 导出所有表
mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql)- 导出一个库
mysqldump -u用户名 -p密码 --lock-all-tables --database 库名 > 文件名(D:/a.sql)
可以-w携带WHERE条件
3.10.2 导入
#在不登录的情况下
mysql -uroot -p dbname < c:/manager.sql #恢复时,先创建database,再用此命令。注意:最后不要加任何东西
#在登录mysql的情况下
source 备份文件
3.10.3 csv格式文件的批量数据导入与导出
#导出
select * from tableName into outfile 文件地址 [控制格式];
select * from tableName into outfile '/tmp/tt.csv' fields terminated by ',' ENCLOSED BY '' LINES TERMINATED BY '/n'; #这是以csv格式导出数据,字段分隔是一个制表符
#导入
load data [local] infile 文件地址 [replace|ignore] into table 表名 [控制格式];
#生成的数据默认的分隔符是制表符,local未指定,则数据文件必须在服务器上,replace 和 ignore 关键词控制对现有的唯一键记录的重复的处理
load data infile '/tmp/tt.csv' into table tableName fields terminated by ',';#这是csv格式数据的导入,注意,如果从excle中另存为csv格式,默认是以",分隔的。
– 控制格式
fields 控制字段格式
默认:fields terminated by ’ ’ enclosed by ‘’ escaped by ‘’
terminated by ‘string’ – 终止
enclosed by ‘char’ – 包裹
escaped by ‘char’ – 转义
– 示例:
SELECT a,b,a+b INTO OUTFILE ‘/tmp/result.text’
FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘"’
LINES TERMINATED BY ’
’
FROM test_table;
lines 控制行格式
默认:lines terminated by ’
terminated by ‘string’ – 终止
3.10.4 insert
select * into target_table from source_table;
#要求目标表target_table不存在,因为在插入时会自动创建
(2)insert into target_table(column1,column2) select column1,5 from source_table;
#要求目标表target_table存在,由于目标表已经存在,所以我们除了插入源表source_table的字段外,还可以插入常量