首先,ubuntu下有几种安装MySQL的方式,apt-get,官网下载deb文件或者源码包安装,这三种里面,apt-get最快最方便,一切配置搞定了,自己剩下需要做的就是启动MySQL吧,不过这种方式呢就是无法控制软件版本,很有可能安装的不是自己想要的版本。第二种方式,下载deb安装,这个是一种二进制文件,类似的还有RPM文件,在文件中已经包含了编译完成的文件,我们只需要直接安装在自己的系统中就可以了;第三种方式,则是下载源码包,自己编译得到二进制文件再进行安装,这个也就是今天要说的编译安装方式。
下面是网上对源码安装和二进制文件安装的区别说明:
源码安装
与二进制发行版本相比,如果我们选择了通过源代码进行安装,那么在安装过程中我们能够对MySQL
所做的调整将会更多更灵活一些。因为通过源代码编译我们可以:
a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码;
b) 根据不同的软件平台环境调整相关的编译参数;
c) 针对我们特定应用场景选择需要什么组件不需要什么组件;
d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集;
e) 同一台主机上面可以安装多个MySQL;
f) 等等其他一些可以根据特定应用场景所作的各种调整。
在源码安装给我们带来更大灵活性的同时,同样也给我们带来了可能引入的隐患:
a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定;
b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差;
c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂,所花费的时间更长;
从上面看来,对MySQL只是一般需求的,还是通过二进制文件安装把,免得引起不必要的麻烦。本人对编译安装过程中的一直参数也不是很熟悉,因此本安装过程中的参数也是网上较为通用的参数。
下面说明编译安装的过程:
(1)如果之前安装过的,先删除
sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysql-server sudo apt-get autoremove mysql-server sudo apt-get remove mysql-common (如果mysql Cpp连接要用的,就不删) dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P(2)现在MySQL编译是要用CMake来完成,安装
sudo apt-get install cmake //安装cmake(3)配置编译参数
cmake -DCMAKE_INSTALL_PREFIX=~/mysql-5.6.19 -DMYSQL_DATADIR=~/mysql-5.6.19/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1
如果失败了,执行以下语句
sudo apt-get install libssl-dev libncurses5-dev
并且清除一些东西,再重新cmake
make clean rm -f CMakeCache.txt(4)cmake成功后进行安装
Make Make install
(5)初始化数据库:(这里没有新建mysql用户,就在原来的用户(oracle)下)
chmod 777 scripts/mysql_install_db scripts/mysql_install_db --basedir=/opt/oracle/mysql-5.6.19 --datadir=/opt/oracle/mysql-5.6.19/data/ --user=oracle
chown oracle:oracle * -R(7)复制启动脚本
sudo cp support-files/mysql.server /etc/init.d/mysql sudo chmod 777 /etc/init.d/mysql(8)启动mysql,加入path路径,再新建root密码
service mysql start mysqladmin -u root password(9)设置mysql开机启动:
修改my.cnf,在[mysqld]区块下添加“user=oracle”这样一行,执行 sudo update-rc.d -f mysql defaults
(10)配置不会中文乱码
vi /etc/my.cnf [client]里面加入 default-character-set=utf8 [mysqld]里面加入 character_set_server=utf8(11)配置表名不区分大小写
[mysqld]里面加入 lower_case_table_names=1(12) 设置mysql可以远程连接
mysql>GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "XXXXXX" WITH GRANT OPTION; (root表示用户,XXXXX表示密码,自己修改!!!) Mysql>flush privileges; vim /etc/mysql/my.cnf找到bind-address = 127.0.0.1注释掉 (本来就没有的话就算了) 或者改为: bind-address = 0.0.0.0
(13) 配置最大连接数和最大包长度
max_allowed_packet=16M max_connections=1500