设为首页 收藏本站
查看: 605|回复: 0

[经验分享] Linux中mariadb的通用二进制安装及mysql的基本命令

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-18 10:40:11 | 显示全部楼层 |阅读模式
一、mariadb的二进制安装:   

1
2
3
4
[iyunv@www ~]# tar -xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/
[iyunv@www local]# ln -s mariadb-5.5.46-linux-x86_64/ mysql
[iyunv@www local]# ls
mariadb-5.5.46-linux-x86_64  mysql    //最好软链接成mysql



   1、先创建mysql系统用户,mysql组,让mysql系统用户去运行mysql,保证安全性:
1
2
[iyunv@www /]# groupadd mysql
[iyunv@www /]# useradd -r mysql



  2、把mysql目录下的文件和目录都设置为属主root,属组mysql:
1
[iyunv@www mysql]# chown -R root:mysql ./*



  3、创建mysql存储数据的目录,并把属主和属组:
1
2
3
4
[iyunv@www mysql]# mkdir -p /data/mydata
[iyunv@www mysql]# chown -R mysql:mysql /data/mydata/
[iyunv@www mysql]# ll -d /data/mydata/
drwxr-xr-x. 2 mysql mysql 4096 Apr 17 08:24 /data/mydata/



4、根据自己服务器的配置选择配置文件:
         my-huge.cnf : 用于高端产品服务器,包括1到2GB RAM,主要运行mysql  
         my-innodb-heavy-4G.ini : 用于只有innodb的安装,最多有4GB RAM,支持大的查询和低流量
         my-large.cnf : 用于中等规模的产品服务器,包括大约512M RAM
         my-medium.cnf : 用于低端产品服务器,包括很少内存(少于128M)
         my-small.cnf : 用于最低设备的服务器,只有一点内存(少于512M)
1
2
3
4
5
6
[iyunv@www support-files]# cp my-large.cnf /etc/my.cnf
[iyunv@www support-files]# vim /etc/my.cnf
[mysqld]                              //在mysqld这里添加三句话
datadir = /data/mydata                //存储数据目录
skip_name_resolve = ON                //禁止反解主机名
innodb_file_per_table = ON            //修改InnoDB为独立表空间模式



  5、复制mysql.server到/etc/init.d/目录下:
1
2
[iyunv@www support-files]# cp mysql.server /etc/init.d/mysqld
[iyunv@www support-files]# chkconfig --add mysqld



  6、对数据库进行初始化安装:
1
2
3
[iyunv@www scripts]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mydata --basedir=/usr/local/mysql
[iyunv@www scripts]# service mysqld start
Starting MySQL.. SUCCESS!



  7、对数据库进行安全加固,数据库默认密码都是为空,删除test的数据库:  
1
2
3
4
5
6
7
8
9
10
11
12
[iyunv@www scripts]# /usr/local/mysql/bin/mysql_secure_installation
  Enter current password for root (enter for none):     //直接回车,因为密码为空
  Set root password? [Y/n] y     //设置新密码
  New password:
  Remove anonymous users? [Y/n] y  //删除其他没用的用户
  ... Success!
  Disallow root login remotely? [Y/n] n   //禁止远程登录mysql,建议禁止
   ... skipping
  Remove test database and access to it? [Y/n] y  //是否删除测试数据库
  - Dropping test database...
  Reload privilege tables now? [Y/n] y     //是否重新加载权限列表
  ... Success!



  到此Mariadb二进制安装完成,可以使用mysql数据库了:  
1
2
3
4
5
6
7
8
9
10
[iyunv@www bin]# mysql -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 5.5.46-MariaDB-log MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>



二、mysql的基本命令:  
    1、用户的创建及授权:        
      用户账号:‘username'@'host'
                 host:此用户访问当前mysql服务器时,允许其通过哪些主机远程创建连接
                      表示方式:IP,网络地址、主机名、通配符(%和_);
                            172.18.1.1.  172.18.0.0/24  www.magedu.com 172.18.%.%           
     创建用户账号:                            //只有查看的权限
                  CREATE USER 'username'@'host' IDENTIFIED BY ‘passwd’
1
2
MariaDB [(none)]> create user 'testusr'@'localhost';
Query OK, 0 rows affected (0.00 sec)



       删除用户账号:
                  DROP USER 'user'@'host'[,user@host]....
1
2
MariaDB [(none)]> drop user 'testusr'@'localhost';
Query OK, 0 rows affected (0.00 sec)



     给用户授权:
                 权限级别:管理权限、数据库、表、字段、存储历程;

         GRANT priv_tyep,...ON [object_type] db_name.tbl_name TO 'user'@'host' [IDENTIFIED BY 'passwd'] ;
             priv_tyep : select、insert、delete、update、atler、drop、create或者all
                db_name.tbl_name:     //可以对表限制
                  *.*:所有库的所有表
                  db_name.*:指定库的所有表
                  db_name.tbl_name:指定库的特定表
                  db_name.routine_name:指定库上的存储过程或存储函数
1
2
MariaDB [mytest]> grant select on mytest.students to 'testusr'@'localhost';
Query OK, 0 rows affected (0.14 sec)      //如果前面创建了用户,那这里不同给密码



    取消用户授权:
             REVOKE priv_type,..ON db_name FROM 'username'@'host';   
1
2
MariaDB [mytest]> revoke select on mytest.students from 'testusr'@'localhost';
Query OK, 0 rows affected (0.00 sec)



       查看用户所获得的权限:
           show grants for 'user'@'host';
           show grants for  current_user;   //查看当前用户的权限   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
MariaDB [mytest]> show grants for 'testusr'@'localhost';
+---------------------------------------------+
| Grants for testusr@localhost                |
+---------------------------------------------+
| GRANT USAGE ON *.* TO 'testusr'@'localhost' |
+---------------------------------------------+
1 row in set (0.00 sec)

MariaDB [mytest]> show grants for current_user;
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION                                                                           |
+----------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)



注意:MariaDB服务进程启动时,会读取mysql库的所有授权表至内存中;
              1、GRANT或REVOKE命令等执行的权限操作会保存于表中,MariaDB此时一般会自动重读授权表,权限修改会立即生效  
              2、其它方式实现的权限修改,要想生效,必须手动运行FLUSH PRIVILEGES命令方可

mysql的命令分为两种,客户端命令和服务端命令:  
    客户端命令:
                  \use           \u  db_name:设定哪个库为默认数据库
                         \exit           \q:退出
                         \delimiter   \d CHAR:设定新的语句结束符
                         \go            \g:语句结束标记
                         \ego          \G: 语句结束标记,结果竖排方式显示;
                         \status       \s: 显示客户端信息
                         \clear         \c:取消语句执行,相当于CRTRL +C
     服务端命令:
                                DDL:  数据定义语言,主要用于管理数据组件,例如表、索引、视图、用户、存储过程
                                         create、drop、alter
                                DDM: 数据操纵语言,主要用管理表中的数据,实现数据的增、删、改、查
                                         insert、delete、select、update

                                DCL:  用户权限
                                         grant、reovke

     注意:每个语句结束符都必须要有语句结束符,默认为(;)。

数据库数据都是有类型的:
         字符型:
                 定长字符型: 最大不超过255字符
                       char(#) :    不区分字符大小写                  以下 # 都代表数字
                       binary(#) :  区分字符大小写
                 变长字符型:   最大好像是6W个字符
                        varchar(#) 和 varbinary(#):
         对象存储:
                    text和 blob(布尔型)
          内置类型:
                    set 和 enum(枚举) :限定选择哪些类型
        数值型:
                  精确数值型:int 、bigint、smallint、tinyint
                  近似数值型:float和dobule      
     数据类型有修饰符:
                  UNSIGNED:无符号      要紧跟在数值型后面,不然会报错
                  NOT NULL:非空
                  DEFAULT value:默认值


1、数据库的管理:创建、删除、和修改

             创建:CREATE { DATABASE | SCHEMA } db_name ;                 
1
2
MariaDB [(none)]> create database mytest;
Query OK, 1 row affected (0.01 sec)



        也可以在后面跟上语句设置字符集合排序规则,不写表示默认:
             [DEFAULT] CHARACTER SET [=] charset_name //设定字符集
                        [DEFAULT] COLLATE [=] colation_name      //设定排序规则            
                    查看支持的所有字符集:SHOW CHARACTER SET   
                    查看支持的所有排序的字符集: SHOW COLLATION
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
MariaDB [mytest]> status;    //查看创建数据库的信息
--------------
mysql  Ver 15.1 Distrib 5.5.46-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:     11
Current database:  mytest
Current user:      root@localhost
SSL:            Not in use
Current pager:     stdout
Using outfile:     ''
Using delimiter:   ;
Server:         MariaDB
Server version:        5.5.46-MariaDB-log MariaDB Server
Protocol version:  10
Connection:     Localhost via UNIX socket
Server characterset:   latin1
Db     characterset:   latin1
Client characterset:   utf8
Conn.  characterset:  utf8
UNIX socket:       /tmp/mysql.sock
Uptime:         1 hour 21 min 59 sec

Threads: 1  Questions: 70  Slow queries: 0  Opens: 6  Flush tables: 2  Open tables: 32  Queries per second avg: 0.014
--------------



     修改:ALTER {DATABASE | SCHEMA } [db_name]        
                            [DEFAULT] CHARACTER SET [=] charset_name
                            [DEFAULT] COLLATE [=] colation_name
1
2
MariaDB [mytest]> alter database mytest character set = cp932;
Query OK, 1 row affected (0.00 sec)



     删除:DROP {DATABASE | SCHEMA } db_name     
1
2
MariaDB [mytest]> drop database mytest;
Query OK, 1 row affected (0.37 sec)



2、表的管理:创建、修改、删除
        创建: CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition) [table_options]
                   (create_definition:)
                           字段:col_name data_type
                           键:
                              PRIMARY KEY(col1,col2,..) 主键
                              UNIQUE KEY(col1,col2...)  唯一键
                              FOREIGN KEY(column)       外键                  
                   (table_options:)
                             ENGINE[=]engine_name :指明存储引擎
                                    查看数据库支持的所有存储引擎类型:
                                          mysql>SHOW ENGINES;
                                    查看某表的存储引擎类型:
                                          mysql>SHOW TABLES STATUS [LIKE 'tbl_name']                     
示例:创建一张表,包含ID号,姓名,年龄,性别,身份证号,把ID和名称设为主键,身份证号设置为唯一键   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
MariaDB [mytest]>create table students(id int unsigned not null,name char(30) not null,age tinyint unsigned,userID bigint,gender enum("w","m"),primary key(id,name),unique key(userID));
Query OK, 0 rows affected (7.48 sec)

MariaDB [mytest]> desc students;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| id     | int(10) unsigned    | NO   | PRI | NULL    |       |
| name   | char(30)            | NO   | PRI | NULL    |       |
| age    | tinyint(3) unsigned | YES  |     | NULL    |       |
| userID | bigint(20)          | YES  | UNI | NULL    |       |
| gender | enum('w','m')       | YES  |     | NULL    |       |
+--------+---------------------+------+-----+---------+-------+
5 rows in set (0.00 sec)



    修改: ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name  [alter_specification]                    
           alter_specification:
             字段:
               添加:ADD [COLUMN] col_name data_type [FIRST |AFTER col_name]

                              删除:DROP [COLUMN] col_name
                              修改:

                                      改名字:CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
                                      改属性:MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
    示例:在name后面添加一个班级,修改属性,最后删除这个字段;
1
2
3
4
5
6
7
8
9
10
11
MariaDB [mytest]> alter table students add class varchar(100) not null after name;
Query OK, 0 rows affected (0.27 sec)               
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [mytest]> alter table students modify class varchar(50) after name;
Query OK, 0 rows affected (0.16 sec)               
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [mytest]> alter table students drop class;
Query OK, 0 rows affected (0.12 sec)               
Records: 0  Duplicates: 0  Warnings: 0



           键:
             添加:ADD {PRIMARY |UNIQUE|FOREIGN} KEY (col1,col2,...)
                         删除:DROP PRIMARY KEY 删除主键
                                  DROP FOREIHN KEY  fk_symbol
1
2
3
4
5
6
7
MariaDB [mytest]> alter table students add unique key(age);
Query OK, 0 rows affected (0.63 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [mytest]> alter table students drop primary key;
Query OK, 0 rows affected (0.22 sec)               
Records: 0  Duplicates: 0  Warnings: 0



                     索引:
                          添加: ADD {INDEX|KEY} [index_name](col1,col2..)

                          删除: DROP {index|key} index_name
1
2
3
4
5
6
7
8
9
10
11
MariaDB [mytest]> alter table students add index ssalc(class);
Query OK, 0 rows affected (0.30 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [mytest]> show index from students;
|  Table   | Non_unique | Key_name
| students |          1 | ssalc   

MariaDB [mytest]> alter table students drop index ssalc;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0



删除表:      DROP TABLE [IF EXISTS] tbl_name;                  
                       
3、索引的管理:创建和删除
     创建: CREATE [UNIQUE|FULLTEXT|SPATAL] INDEX index_name [BTREE|HASH] ON tbl_name (Col1,col2...)
     删除:  DROP INDEX index_name ON tbl_name   
1
2
3
4
5
6
7
MariaDB [mytest]> create index class_and_name on students(class,name);
Query OK, 0 rows affected (0.12 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [mytest]> create index class_and_name on students(class,name);
Query OK, 0 rows affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0



4、对表的数据进行管理:insert、delete、update、select                                          

INSERY INTO:  添加语句

              INSERT [INTO] tbl_name [(col1,..)] {VALUES|VALUE}(val1,...),(...)
1
2
MariaDB [mytest]> insert into students(id,name,age) values (1,'xiao ming',24);
Query OK, 1 row affected, 1 warning (0.09 sec)



      注意:
                   字符型:引号 ' '        'xiao ming'
                   数值型:不能用引号 ' '     74
SELECT: 查询语句              
                  1、SELECT * FROM tbl_name;                      查看表中的所有字段
                  2、SELECT col1,col2,......FROM tbl_name;      挑选表中的字段查看
                3、SELECT col1,.....FROM tbl_name WHERE clause;  根据where clause条件查看字段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
MariaDB [mytest]> select * from students;
+----+-----------+------+--------+--------+-------+
| id | name      | age  | userID | gender | class |
+----+-----------+------+--------+--------+-------+
|  1 | xiao ming |   24 |   NULL | NULL   |       |
+----+-----------+------+--------+--------+-------+
1 row in set (0.04 sec)

MariaDB [mytest]> select id,name  from students;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | xiao ming |
+----+-----------+
2 rows in set (0.00 sec)



              WHERE clause:用于指明挑选条件
                                   col_name 操作符 value ;
                                      比如:age > 30 ;
          操作符有:         
             比较条件:>,<,>=,<=,==
             组合条件:and  or not
                     大于等于和小于等于: BETWEEN....AND.....                                    
                     通配符:
                            LIKE  'PAT'  
                                   %:任意长度的任意字符
                                   _: 任意单个字符
                    正则表达式:  RLIKE 'PAT'
                    数据为空: is null                //age is null
                    数据不为空:is not null        //age is not null      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
MariaDB [mytest]> select * from students where age > 22;
+----+-----------+------+--------+--------+------------+
| id | name      | age  | userID | gender | class      |
+----+-----------+------+--------+--------+------------+
|  2 | xiao ming |   23 |   NULL | NULL   | yi nian ji |
|  3 | xiao hong |   24 |   NULL | NULL   | yi nian ji |
|  4 | xiao tian |   25 |   NULL | NULL   | yi nian ji |
+----+-----------+------+--------+--------+------------+
3 rows in set (0.09 sec)

MariaDB [mytest]> select * from students where gender is not null;
+----+---------+------+--------+--------+------------+
| id | name    | age  | userID | gender | class      |
+----+---------+------+--------+--------+------------+
|  5 | xiao li |   26 |   NULL | w      | er nian ji |
+----+---------+------+--------+--------+------------+
1 row in set (0.00 sec)

MariaDB [mytest]> select * from students where name rlike 'ng$';
+----+-----------+------+--------+--------+------------+
| id | name      | age  | userID | gender | class      |
+----+-----------+------+--------+--------+------------+
|  1 | xiao wang |   22 |   NULL | NULL   | yi nian ji |
|  2 | xiao ming |   23 |   NULL | NULL   | yi nian ji |
|  3 | xiao hong |   24 |   NULL | NULL   | yi nian ji |
+----+-----------+------+--------+--------+------------+
3 rows in set (0.06 sec)



             4、对数据进行排序:

                          SELECT col1,...FROM tbl_name [WHERE clause] ORDER BY col_name,col_name2 [ASC|DESC]                        
                                ASC:升序                                       
                                DESC:降序  
1
2
3
4
5
6
7
8
9
10
11
MariaDB [mytest]> select * from students order by id desc;
+----+-----------+------+--------+--------+------------+
| id | name      | age  | userID | gender | class      |
+----+-----------+------+--------+--------+------------+
|  5 | xiao li   |   26 |   NULL | w      | er nian ji |
|  4 | xiao tian |   25 |   NULL | NULL   | yi nian ji |
|  3 | xiao hong |   24 |   NULL | NULL   | yi nian ji |
|  2 | xiao ming |   23 |   NULL | NULL   | yi nian ji |
|  1 | xiao wang |   22 |   NULL | NULL   | yi nian ji |
+----+-----------+------+--------+--------+------------+
5 rows in set (0.04 sec)



delete:按行进行删除

              1、DELETE FROM tbl_name [WHERE where_conditin]
              2、DELETE FROM tbl_name [ORDER BY ..] [LIMIT row_count]
1
2
3
4
5
MariaDB [mytest]> delete from students where gender is not null;
Query OK, 1 row affected (0.13 sec)

MariaDB [mytest]> delete from students  order by id desc limit 2;
Query OK, 2 rows affected (0.04 sec)    //把最大两个ID删除



update:对数据进行修改

UPDATE table_reference SET col_name1=value1 [, col_name2=value2] ...[WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
1
2
3
MariaDB [mytest]> update students set age=age-10 where id >1;
Query OK, 2 rows affected (0.05 sec)
Rows matched: 2  Changed: 2  Warnings: 0



1
2
3
MariaDB [mytest]> update students set age=age+10  order by  age desc limit 2;
Query OK, 2 rows affected (0.05 sec)
Rows matched: 2  Changed: 2  Warnings: 0



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-205564-1-1.html 上篇帖子: mysql 安装脚本 下篇帖子: 解析MySQL权限表 二进制 通用 Linux mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表