安装有linux系统的主机一台
mysql源码包,可以上官网下载
首先需要注意的是,mysql最新的版本都需要cmake编译安装,因此需要先安装cmake,在centos7下可以直接yum install cmake。当然你也可以下载cmake的源码包直接编译安装下载后1、tar zxvf cmake-2.8.5.tar.gz2、cd cmake-2.8.5,执行./configure3、make && make install
安装好cmake后,解压下载的mysql,编译安装1、tar zxvf mysql-5.5.32-linux2.6-x86_64.tar.gz2、cd mysql-5.5.32-linux2.6-x86_643、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
编译完成后启动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 &
最后,小狼再介绍一些安装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';
安装多个mysql1、copy一份mysqlcp /usr/local/mysql /usr/local/mysql2cp /etc/my.cnf /etc/my2.cnf,同时修改my2.cnf中的端口号和basedir和datadir2、按上述步骤中初始化新mysql,其他操作同上3、需要注意的是启动时候要指定配置文件/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my2.cnf --user=root &
mysql忽略大小写 mysql默认是区分大小写的 lower_case_table_names=1
增加IO操作速度,修改下面参数 innodb_flush_log_at_trx_commit
打开一个已经删除数据的表,速度特别慢,通过网上了解知道当通过DELETE方式删除表数据时,表段的HWM(水位线)不会降低,Truncate缺省的会回收空间,降低HWM。 truncate product; Cannot truncate a table referenced in a foreign key constraint 外键约束,不能执行truncate 有时还原数据库时,因为表有约束导致40014错误,可以通过关闭外键约束,还原成功时再启用 禁用,此时,执行SET FOREIGN_KEY_CHECKS=0,就可以执行上面的truncate了