zoukankan      html  css  js  c++  java
  • 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的字段外,还可以插入常量
    
  • 相关阅读:
    浙大数据结构课后习题 练习二 7-2 Reversing Linked List (25 分)
    浙大数据结构课后习题 练习二 7-2 一元多项式的乘法与加法运算 (20 分)
    浙大数据结构课后习题 练习一 7-1 Maximum Subsequence Sum (25 分)
    浙大数据结构课后习题 练习一 7-1 最大子列和问题 (20 分)
    PAT Basic 1019 数字黑洞 (20 分)
    PAT Basic 1017 A除以B (20 分)
    PAT Basic 1013 数素数 (20 分)
    PAT Basic 1007 素数对猜想 (20 分)
    PAT Basic 1003 我要通过! (20 分)
    自动化运维——HelloWorld(一)
  • 原文地址:https://www.cnblogs.com/daozhangblog/p/12446455.html
Copyright © 2011-2022 走看看