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 //SSL

mysql扩展引擎安装

-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

  1. 导出一张表
    mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql)
  2. 导出多张表
    mysqldump -u用户名 -p密码 库名 表1 表2 表3 > 文件名(D:/a.sql)
  3. 导出所有表
    mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql)
  4. 导出一个库
    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的字段外,还可以插入常量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值