安裝MySQL數據庫
(1) 創建mysql用戶的賬號
[root@localhost ~]# groupadd mysql [root@localhost ~]# useradd -s /sbin/nologin -g mysql -M mysql [root@localhost ~]# tail -1 /etc/passwd mysql:x:501:501::/home/mysql:/sbin/nologin [root@localhost ~]# id mysql uid=501(mysql) gid=501(mysql) groups=501(mysql)
(2)獲取MySQL二進制軟件包
百度雲盤:http://pan.baidu.com/s/1hrBCzsC
提取碼:4yjf
(3) 采用二進制方式安裝MySQL
[root@localhost ~]# tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/ [root@localhost ~]# cd /usr/local/ [root@localhost local]# mv mysql-5.5.32-linux2.6-x86_64 mysql-5.5.32 [root@localhost local]# ln -s mysql-5.5.32 mysql [root@localhost local]# ls bin games lib libexec mysql-5.5.32 nginx-1.10.2 share etc include lib64 mysql nginx sbin src [root@localhost local]# cd /usr/local/mysql [root@localhost mysql]# ls bin data include lib mysql-test scripts sql-bench COPYING docs INSTALL-BINARY man README share support-files
命令如下:
[root@localhost ~]# cd /usr/local/mysql [root@localhost mysql]# ls -l support-files/*.cnf -rw-r--r--. 1 7161 wheel 4691 Jun 19 2013 support-files/my-huge.cnf -rw-r--r--. 1 7161 wheel 19759 Jun 19 2013 support-files/my-innodb-heavy-4G.cnf -rw-r--r--. 1 7161 wheel 4665 Jun 19 2013 support-files/my-large.cnf -rw-r--r--. 1 7161 wheel 4676 Jun 19 2013 support-files/my-medium.cnf -rw-r--r--. 1 7161 wheel 2840 Jun 19 2013 support-files/my-small.cnf [root@localhost mysql]# /bin/cp support-files/my-small.cnf /etc/my.cnf
(5)初始化MySQL數據庫文件
初始化命令如下:
[root@localhost ~]# mkdir -p /usr/local/mysql/data #建立MySQL數據文件目錄 [root@localhost ~]# chown -R mysql.mysql /usr/local/mysql #授權mysql用戶管理MySQL的安裝目錄 [root@localhost ~]# yum -y install libaio #光盤源安裝依賴包,否則下一步的編譯會報錯 [root@localhost ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql ------------ ----------- Please report any problems with the /usr/local/mysql/scripts/mysqlbug script!
以上的命令主要作用是生成如下數據庫文件
[root@localhost ~]# tree /usr/local/mysql/data/ /usr/local/mysql/data/ ├── mysql │ ├── columns_priv.frm │ ├── columns_priv.MYD │ ├── help_keyword.frm ...以下省略若干...
這些MySQL數據文件是MySQL正確運行所必需的基本數據庫文件,其功能是對MySQL權限,狀態等進行管理。
2.3.3 初始化故障排錯集錦
錯誤示例1:
usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared ob #錯誤原因是沒有libaio函數庫的支持。需要 yum -y install libaio
錯誤示例2:
WARNING:The host'mysql'could not be looked up with resolveip #需要修改主機名解析,使其和uname -n一樣,修改后的結果如下: [root@localhost ~] # grep `uname -n` /etc/hosts
錯誤示例3:
ERROR:1004Can't create file '/tmp/#sql300e_1_o.frm'(errno:13) #原因是/tmp目錄的權限有問題。 解決辦法為處理/tmp目錄,如下: [root@localhost ~]# ls -ld /tmp drwxrwxrwt. 3 root root 4096 Jul 14 07:56 /tmp [root@localhost ~]# chmod -R 1777 /tmp/
此故障必須解除,否則,后面會出現登陸不了數據庫等問題。
2.4 配置並啟動MySQL數據庫
(1)設置MySQL啟動腳本,命令如下:
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld #拷貝MySQL啟動腳本到MySQL的命令路徑 [root@localhost mysql]# chmod +x /etc/init.d/mysqld #使腳本可執行
(2)MySQL二進制默認安裝路徑是/usr/local/mysql,啟動腳本里是/usr/local/mysql。如果安裝路徑不同,那么腳本里路徑等都需要替換
(3)啟動MySQL數據庫,命令如下:
[root@localhost mysql]# /etc/init.d/mysqld start Starting MySQL.. SUCCESS!
(4)檢查MySQL數據庫是否啟動,命令如下:
[root@localhost mysql]# netstat -antup | grep mysql tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1702/mysqld
如果發現3306端口沒起來,請tail -100 /usr/local/mysql/data/主機名.err查看日志信息,看是否有報錯信息,然后根據相關錯誤提示進行調試。經常查看服務運行日志是個很好的習慣,也是高手的習慣。
(5)查看MySQL數據庫啟動結果日志,命令如下:
[root@localhost mysql]# tail -10 /usr/local/mysql/data/localhost.err InnoDB: Creating foreign key constraint system tables InnoDB: Foreign key constraint system tables created 170714 8:33:47 InnoDB: Waiting for the background threads to start 170714 8:33:48 InnoDB: 5.5.32 started; log sequence number 0 170714 8:33:48 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306 170714 8:33:48 [Note] - '0.0.0.0' resolves to '0.0.0.0'; 170714 8:33:48 [Note] Server socket created on IP: '0.0.0.0'. 170714 8:33:49 [Note] Event Scheduler: Loaded 0 events 170714 8:33:49 [Note] /usr/local/mysql/bin/mysqld: ready for connections. Version: '5.5.32' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server (GPL)
(6)設置MySQL開機自啟動,命令如下:
[root@localhost mysql]# chkconfig --add mysqld [root@localhost mysql]# chkconfig mysqld on
提示:也可以將啟動命令/etc/init.d/mysqld start 放到/etc/rc.local里面
(7)配置mysql命令的全局使用路徑,命令如下:
[root@localhost mysql]# ln -s /usr/local/mysql/bin/* /usr/local/bin/ [root@localhost mysql]# which mysqladmin /usr/local/bin/mysqladmin
(8)登陸MySQL測試,命令如下:
[root@localhost mysql]# mysql #直接輸入命令即可登陸
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.5.32 MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> Bye
提示:
MySQL安裝完成以后,默認情況下,root賬戶是無密碼的,這個必須要設置。
2.5 MySQL安全配置
(1)為MySQL的root用戶設置密碼,命令如下:
[root@localhost mysql]# mysqladmin -u root password '123123' #設置密碼 [root@localhost mysql]# mysql #無法直接登陸了 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) [root@localhost mysql]# mysql -uroot -p #新的登陸方式 Enter password: #輸入設置的密碼 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.5.32 MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
(2)清理無用的MySQL用戶及庫,命令如下:
mysql> select user,host from mysql.user;
+------+-----------+
| user | host |
+------+-----------+
| root | 127.0.0.1 | | root | ::1 | | | localhost | | root | localhost | +------+-----------+ 4 rows in set (0.00 sec) mysql> drop user "root"@"::1"; Query OK, 0 rows affected (0.00 sec) mysql> drop user ""@"localhost"; Query OK, 0 rows affected (0.00 sec) mysql> select user,host from mysql.user; +------+-----------+ | user | host | +------+-----------+ | root | 127.0.0.1 | | root | localhost | +------+-----------+ 2 rows in set (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
修改字符集為utf-8
[mysqld] character_set_server=utf8
重啟mysql即可
systemctl restart mysqld