安装mysql 5.5.19
- 安装常用软件 参考文章
-
安装cmake(mysql5.5.19已经采用cmake编译,可通过查找configure.cmake及其他带cmake的文件名辨别出)
#CMake Dependencies yum -y install curl libarchive expat #安装cmake tar -zxv -f cmake-2.8.8.tar.gz; cd cmake-2.8.8; #如果还没有安装CMake(使用下面命令) ./bootstrap;make && make install; #注意:一个已经安装了的CMake也可以用于编译新版本的CMake(使用下面命令) #cmake .;make && make install #命令汇总: tar -zxv -f cmake-2.8.8.tar.gz;cd cmake-2.8.8;./bootstrap;make && make install;
-
新建一个用于运行mysql的用户
/usr/sbin/groupadd mysql; /usr/sbin/useradd -g mysql mysql;
- 解包并编译安装mysql
tar -zxv -f mysql-5.5.19.tar.gz; cd mysql-5.5.19; cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \ -DMYSQL_TCP_PORT=3306 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS:STRING=all \ -DMYSQL_UNIX_ADDR=/home/mysql/mysqld.sock \ -DWITH_DEBUG=0 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_READLINE=1 \ -DMYSQL_DATADIR=/home/mysql/data \ -DSYSCONFDIR=/home/mysql/; make && make install; #命令汇总: tar -zxv -f mysql-5.5.19.tar.gz;cd mysql-5.5.19;cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DMYSQL_UNIX_ADDR=/home/mysql/mysqld.sock -DWITH_DEBUG=0 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1 -DMYSQL_DATADIR=/home/mysql/data -DSYSCONFDIR=/home/mysql/;make && make install # 如果需要更改配置 make clean rm -f CMakeCache.txt
- 配置MySQL编译选项详解
-DCMAKE_INSTALL_PREFIX #安装路径 -DMYSQL_TCP_PORT #端口号 -DDEFAULT_CHARSET #默认使用utf8字符 -DDEFAULT_COLLATION #校验字符 -DMYSQL_UNIX_ADDR #连接数据库socket路径 -DWITH_DEBUG #bool值,表示是否开启debug模式 -DWITH_MYISAM_STORAGE_ENGINE=1 #安装myisam存储引擎 -DWITH_INNOBASE_STORAGE_ENGINE=1 #安装innodb存储引擎 -DENABLED_LOCAL_INFILE=1 #允许从本地导入数据 -DWITH_READLINE=1 #快捷键功能 -DMYSQL_DATADIR #数据库路径 -DSYSCONFDIR #MySQL配辑文件(my.cnf存放目录) 其他参数: -DWITH_MEMORY_STORAGE_ENGINE=1 #安装memory存储引擎 -DWITH_FEDERATED_STORAGE_ENGINE=1 #安装frderated存储引擎 -DWITH_ARCHIVE_STORAGE_ENGINE=1 #安装archive存储引擎 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 #安装blackhole存储引擎 -DWITH_PARTITION_STORAGE_ENGINE=1 #安装数据库分区 -DEXTRA_CHARSETS=all #安装所有扩展字符集 -DMYSQL_USER=mysql #(默认mysql)MySQL用户名 -DWITH-EMBEDDED_SERVER=1 #编译成embedded MySQL library (libmysqld.a) -DWITH_SSL=yes #SSL -DINSTALL_PLUGINDIR=/usr/local/mysql/plugin #插件文件及配置路径
- 共享lib库文件
echo '/usr/local/mysql/lib' >> /etc/ld.so.conf; ldconfig;
- 配置MySQL编译选项详解
- 将mysql安装目录的权限赋予mysql用户
chmod +w /usr/local/mysql;chown -R mysql:mysql /usr/local/mysql;
- 创建mysql数据库存放目录
mkdir -p /home/mysql/data; chown -R mysql:mysql /home/mysql #主从配置版本 日志目录 mkdir -p /home/mysql/binlog/; mkdir -p /home/mysql/relaylog/ #命令汇总: mkdir /home/mysql/{data,binlog,relaylog};chown -R mysql:mysql /home/mysql
- 以mysql用户帐号的身份建立数据表
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/home/mysql/data --user=mysql
- MySQL数据库的mysql.server启动与终止脚本
# cp /usr/local/mysql/support-files/mysql.server /home/mysql/mysqld # vim /home/mysql/mysqld basedir='/usr/local/mysql' datadir='/home/mysql/data'
my.cnf 读取顺序顺序解析: my.cnf 读取顺序: /etc/my.cnf /etc/mysql/my.cnf /var/lib/mysql/my.cnf ~/.my.cnf "$datadir/my.cnf" 注意:即使有多个不同目录下的my.cnf,mysql只按照读取顺序读取第一个读取到的my.cnf文件,其他cnf文件配置忽略 源代码释疑: #mysql.server文件 line:246-256
-
创建my.cnf配置文件(非主从配置版本)
#由于某些centos会默认存在/etc/my.cnf,先尝试清除,减少干扰 rm -fr /etc/my.cnf # 复制配置文件(my-medium.cnf复制到data下是有原因的) cp /usr/local/mysql/support-files/my-medium.cnf /home/mysql/my.cnf; ln -fs /home/mysql/my.cnf /etc/my.cnf # 修改my.cnf配置 vi /home/mysql/my.cnf # [mysqld] #添加: datadir = /home/mysql/data log-error = /home/mysql/error.log pid-file = /home/mysql/mysql.pid #InnoDB实现独立表空间模式 innodb_file_per_table=1 #修改 #二进制日志的目录(更新插入删除操作) log-bin=/home/mysql/binlog/mysql-bin
提示:如果是新建数据库,可以直接用 innodb_file_per_table 参数。如果原来数据库已存在,并且是共享表空间模式,那必须通过整体数据迁移来实现,切不可直接把此命令放入配置里面!详情请了解共享表空间和独立表空间的区别
- #赋予shell脚本可执行权限并启动mysql
#两种mysql操作方式 #1.直接操作源文件 /home/mysql/mysqld Usage: mysqld {start|stop|restart|reload|force-reload|status} reload #重新加载my.cnf配置文件 #2.建立软连接,通过service(服务)开启 chmod +x /home/mysql/mysqld; ln -f -s /home/mysql/mysqld /etc/init.d/mysqld; service mysqld restart
- mysql启动后检测是否正确加载my.cnf
[root@localhost data] ps -aux | grep mysql #/bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/home/mysql/data --pid-file=/home/mysql/mysql.pid #/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/home/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/home/mysql/error.log --pid-file=/home/mysql/mysql.pid --socket=/home/mysql/mysqld.sock --port=3306
对比一下–pid-file,–log-error是否和设置一样,不一样代表没有加载上此my.cnf,那可以按照my.cnf文件读取顺序查找和删除干扰my.conf文件
- #
chown -R mysql:mysql /home/mysql
-
通过命令行登录管理mysql服务器(提示输入密码时直接回车,缺省的mysql的root用户无密码)
#通过命令行登录管理MySQL服务器(提示输入密码时直接回车): /usr/local/mysql/bin/mysql -u root -p -S /home/mysql/mysqld.sock #或者 /usr/local/mysql/bin/mysql -u root -p #查看所有用户 mysql>use mysql; mysql>select Host,User,Password from user; #默认保留 root@localhost和root@127.0.0.1 #为root帐户设置初始密码 /usr/local/mysql/bin/mysqladmin -u root password root #或命令行修改root密码: mysql> UPDATE mysql.user SET password=PASSWORD('root') WHERE User='root'; mysql> FLUSH PRIVILEGES; #删除多余的用户 mysql>delete from user where user=""; mysql>delete from user where Host="::1"; #输入以下SQL语句,创建一个具有root权限的用户(admin)和密码(admin) #grant(授予) all(全部权限) on *.*(所有表) mysql>GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION; #其他操作 mysql>flush privileges; mysql>exit; //退出 #授权法(推荐方法)。 #例如,你想myuser使用mypassword从任何主机连接到mysql服务器的 #[1]如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码 mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.2.100' IDENTIFIED BY 'mypassword'; #[2]允许地址202.11.10.253上用root用户,密码mypassword来连接mysql的所有数据库(on *.*),付给select,insert,update,delete权限。 mysql>grant select,insert,update,delete on *.* to 'root'@"202.11.10.253" Identified by "mypassword"; #[4]允许地址202.11.10.253上用root用户,密码mypassword来连接mysql的所有数据库,付给所有权限。 mysql>grant all on *.* to 'root'@"202.11.10.253" Identified by "mypassword"