Ubuntu安装LAMP环境

Ubuntu install Apache2

开门见山,先来一条最简单粗暴的命令:

sudo apt-get install lamp-server^ 

这条命令安装的是Apache2,PHP7.2,MySQL5.7 。

安装其他可以需要的PHP扩展

# 安装常用扩展
sudo -y apt-get install php7.2-fpm php7.2-mysql php7.2-curl php7.2-json php7.2-mbstring php7.2-xml  php7.2-intl 

#  安装其他扩展(按需安装)
sudo apt-get install php7.2-gd
sudo apt-get install php7.2-soap
sudo apt-get install php7.2-gmp    
sudo apt-get install php7.2-odbc       
sudo apt-get install php7.2-pspell     
sudo apt-get install php7.2-bcmath   
sudo apt-get install php7.2-enchant    
sudo apt-get install php7.2-imap       
sudo apt-get install php7.2-ldap       
sudo apt-get install php7.2-opcache
sudo apt-get install php7.2-readline   
sudo apt-get install php7.2-sqlite3    
sudo apt-get install php7.2-xmlrpc
sudo apt-get install php7.2-bz2
sudo apt-get install php7.2-interbase
sudo apt-get install php7.2-pgsql      
sudo apt-get install php7.2-recode     
sudo apt-get install php7.2-sybase     
sudo apt-get install php7.2-xsl
sudo apt-get install php7.2-cgi        
sudo apt-get install php7.2-dba 
sudo apt-get install php7.2-phpdbg     
sudo apt-get install php7.2-snmp       
sudo apt-get install php7.2-tidy       
sudo apt-get install php7.2-zip

重启一下Apache2:

sudo /etc/init.d/apache2 restart

安装PHPMyAdmin

执行代码:

sudo apt-get install phpmyadmin

phpmyadmin设置:
在安装过程中会要求选择Web server:apache2或lighttpd,使用空格键选定apache2,按回车确定。
然后会要求输入设置的phpmyadmin用户的连接密码。
phpmyadmin测试:在浏览器地址栏中打开[http://localhost/phpmyadmin]。

解决问题

以上的方法安装好了之后,你会发现,使用root账号登陆,欸?!密码多少?安装的时候没有像老版本那样提示我输入密码,只让我输入了phpmyadmin的密码。可是phpmyadmin的账号的权限只有查看,另外啥也做不了。咋整?!

搜索了很久,终于查到原因,MySQL5.7版本后,提升了安全机制。密码可以产生随机密码之类的。可是!我用的Ubuntu库安装的。直接跳过了。

情况(一):使用证书登陆SSH。Amazon AWS的EC2里创建的Ubuntu服务器

说是随机密码可以在安装日志看到。但是!采用Ubuntu库安装是不产生随机密码的。特别坑的就在这里。可以在日志文件里看到有这么一句话

2019-02-06T14:32:36.673245Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the –initialize-insecure option.

路径:/var/log/mysql

这其实进入的是一个死循环。不允许使用root空密码登陆,可是改密码又是需要root账号的权限。前面说好的随机密码呢?很抱歉,Ubuntu库安装的没有随机密码。

方法:

找到文件:mysqld.cnf

路径:/etc/mysql/mysql.conf.d

使用命令编辑:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

如下位置添加 代码skip-grant-tables = 1

[mysqld]
#
* Basic Settings
#
skip-grant-tables = 1

路径:/etc/mysql/mysql.conf.d/mysqld.cnf

重启MySQL服务:

sudo /etc/init.d/mysql restart 

也可以不修改文件,采用安全模式启动(这里两种方式都记录了)

先停止MySql服务

sudo service mysql stop

然后以安全模式启动MySQL

sudo mysqld_safe --skip-grant-tables &

然后登陆MySQL就不用输入用户名密码了。直接用如下命令登陆

mysql -u root

一开始还搜索了各种直接SQL改密码的方法为什么不对的原因,其中有什么5.7版本不用password这个名称之类的。

结果用

select user, plugin from mysql.user;

一查,发现,他的plugin是 auth_socket ,当下直接改成了

mysql> update mysql.user set authentication_string=PASSWORD('newpassword'), plugin='mysql_native_password' where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

然后重启MySql服务就解决了这个问题。可以使用root和刚才设置的密码登陆了。

关于auth_socket,搜索到在官方有说明:https://dev.mysql.com/doc/refman/5.7/en/authentication-plugins.html

问题情况(二),采用root账号密码的方式登录SSH

我在操作此方法的前提是安装了phpMyAdmin,在安装phpMyAdmin时会创建
phpMyAdmin 这个用户

如果你是使用root和密码方式登陆SSH的。那么还是有权限登陆命令行MySQL:

mysql -u root -p mysql

输入root密码。执行如下命令

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'YOUR NEW PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

然后,可以使用phpadmin这个账号登录了。拥有权限去做其他事情了。也可用这个账号做需要做的事情了。

发表评论