linux下mysql的搭建及简单配置
1、首先需要注意的是,mysql最新的版本都需要cmake编译安装,因此需要先安装cmake,在centos7下可以直接yum install cmake。当然你也可以下载cmake的源码包直接编译安装
下载后
1、tar zxvf cmake-2.8.5.tar.gz
2、cd cmake-2.8.5,执行./configure
3、make && make install
2、安装好cmake后,解压下载的mysql,编译安装
1、tar zxvf mysql-5.5.32-linux2.6-x86_64.tar.gz
2、cd mysql-5.5.32-linux2.6-x86_64
3、cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/tang/data/mysql -DSYSCONFDIR=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tang/data/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_EXAMPLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_TCP_PORT=3307 -DCOMPILATION_COMMENT=Master_DB -DWITH_DEBUG=0
3、编译完成后启动mysql,会有以下报错
Can't open the mysql.plugin table. Please run mysql_upgrade to create it
没有执行 mysql_install_db - u mysql 或 mysql_upgrade创建初始mysql数据库
在安装路径的scripts下
命令mysql_install_db --user=myother --basedir=/usr/local/mysql/ --datadir=/tang/data/mysql/
mysql_install_db执行的时候报错
Could not find ./bin/my_print_defaults
是需要加安装路径和数据路径
--basedir=/usr/local/mysql/ --datadir=/tang/data/mysql-other/
拷贝配置文件
cp /tools/mysql-5.5.22/support-files/my-medium.cnf /etc/my.cnf
最后启动mysql
/usr/local/mysql/bin/mysqld_safe --user=root &
4、最后,小狼再介绍一些安装mysql后常用的设置
1、mysql允许远程连接
mysql安装后,很多服务器都是远程操作,因此该步骤是必不可少的
1>
MySQL>update user set host = '%' where user = 'root';
执行这个可能报下面错误
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
这时候再执行下面,发现已经修改了,那是因为没有FLUSH PRIVILEGES,接着下面步骤就可以了
MySQL>select host, user from user;
2> MySQL>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
给予任何主机访问数据的权限
3>MySQL>FLUSH PRIVILEGES;
修改生效
2、mysql设置密码方法
鉴于安全考虑,修改密码也是比不可少的步骤
方法一:
(适用于管理员或者有全局权限的用户重设其它用户的密码)
进入命令行模式
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='name';
mysql> FLUSH PRIVILEGES;
mysql> QUIT
方法二:
(应用同上,只是方法不同)
mysql -u root mysql
mysql> SET PASSWORD FOR name=PASSWORD('new password');
mysql> QUIT
(以上两种方法我不常用,如果是管理员,我会用其它如phpmyadmin或者MYSQL-front 等工具来管理用户权限,比较直观又方便)
3、查看用户权限
show grants for 你的用户
grant 权限 on 数据库对象 to 用户
增加新用户的好方法
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass1';
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'user1'@'localhost';
GRANT ALL ON *.* TO 'user1'@'localhost';
grant select,insert,update,delete on *.* to user1@localhost Identified by "password1";
4、mysql基础语句
创建一个四列的表
mysql>CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1), birth DATE, birthaddr VARCHAR(20));
1> 插入
往表中插入数据
mysql> insert into mytable values (’abccs’,’f’,’1977-07-07’,’china’);
往表中导入一个文本,每行包含一个记录,用定位符(tab)把值分开,并且以在CREATE TABLE语句中列出的列次序给出
mysql> LOAD DATA LOCAL INFILE "mytable.txt" INTO TABLE mytable;
2> 修改
修改一行记录
mysql> update mytable set birth = "1973-09-02" where name = "tom";
增加一列
mysql> alter table mytable add column single char(1);
删除一整列
mysql> alter table mytable drop column jishu;
mytable为表名,技术为列名
删除一行
mysql> delete from mytable where name=’abc’;
3> 查询
组合查询
mysql> select * from mytable where name='tang' and birth='1983-04-16';
mysql> select name,birth from mytable;
对行排序
mysql> select name,birth from mytable order by birth;
逆向排序
mysql> select name,birth from mytable order by birth desc;
行计数
mysql> select count(*) from mytable;
统计某一列里相同值的行数
select sex,count(*) from mytable GROUP by sex;
多个表组合查询
select name,sex,title from mytable,title where name=jishu and name='wangxin';
1、安装多个mysql
1、copy一份mysql
cp /usr/local/mysql /usr/local/mysql2
cp /etc/my.cnf /etc/my2.cnf,同时修改my2.cnf中的端口号和basedir和datadir
2、按上述步骤中初始化新mysql,其他操作同上
3、需要注意的是启动时候要指定配置文件
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my2.cnf --user=root &