Officials say the photo of Ms Badu in The Star newspaper was "an insult to Islam". The paper has apologised.
The Grammy-award winner was due to perform on Wednesday in Kuala Lumpur and is said to be dismayed at the news.
Muslim-majority Malaysia has previously warned other international artists to dress modestly for their concerts.
Tattoos are forbidden in Islam and using the word "Allah" in a way deemed disrespectful offends many Muslims.
The photo of Ms Badu with several words in Arabic and Hebrew written on her body features prominently on her official fan site. It is not clear whether Ms Badu's body art is permanent.
The Culture, Arts and Heritage Ministry says it was not aware of the tattoos when it initially approved the concert, the BBC's Jennifer Pak in Kuala Lumpur reports. Some Muslims began protesting after The Star published the photo.
Now the culture ministry says it is justified in banning Ms Badu's concert because it breaches religious sensitivities and cultural values.
Information Minister Rais Yatim said a government committee had decided to cancel the show because Ms Badu's body art was "an insult to Islam and a very serious offence".
According to the statement, the body art "triggered public criticism that could jeopardise national security and cause a negative impact to the government's image".
Concert organisers are in touch with officials and hope the cancellation will be reversed, the Associated Press news agency reports.
Ms Badu, 41, had already arrived in Malaysia. She is "worried and dismayed" over the incident, according to the concert organiser.
The Home Ministry has asked The Star to explain why it published the photo. The Star has already apologised, saying its inclusion in Monday's edition was "inadvertent".
"We deeply regret any offence caused to Muslims and sincerely apologise for the oversight," the paper said on Tuesday.

The incident took place on the train service between Dunblane and Edinburgh at 10:30 on 14 June.
British Transport Police said the guard on board was shouted and sworn at aggressively before being spat at by a passenger.
The man was described as aged about 20-years-old, of skinny build, with short blonde hair and a Scottish accent.
He was wearing a green camouflage jacket, black skinny jeans and trainers.

Six are charged with attempted murder, accused of setting fire to newspaper with which the man had covered himself.
The seventh is charged with failing to assist the Polish man, who was only saved by the actions of passers-by after his attackers fled.
The attack, which was captured on CCTV, shocked the country.
Six of the accused come from Syria, a seventh from Libya. They range between 16 and 21 in age.
They arrived in Germany between 2014 and 2016, some as unaccompanied minors, say German media reports.
The case has renewed debate about the care of unaccompanied minors, as well as adding to an ongoing argument about whether CCTV cameras help combat crime.
Germany surveillance: Security trumps privacy as video bill passed
Why are 10,000 migrant children missing in Europe?
The attack took place in the Schoenleinstrasse underground station in the southern Berlin district of Neukoelln at about 02:00 (01:00 GMT) on Christmas Day.
The alleged ringleader, a 21-year-old Syrian, is accused of lighting a handkerchief and placing it near the man's head, and then running away as the flames spread to the man's backpack and a plastic bag.
A train driver used a fire extinguisher to control the flames as passers-by helped to put them out.
Six of the suspects surrendered to police immediately after CCTV pictures of the incident in Berlin were released.
The alleged ringleader was arrested near his home.
He now says he was drunk and cannot remember what happened.
But he will be charged as an adult and will face at least three years behind bars if found guilty.
They have all been in detention since 27 December.
Malaysia has cancelled a concert by US singer Erykah Badu after a publicity photo showed her with the Arabic word for "Allah" tattooed on her upper body.
[NEXT_CONCEPT]
Police are appealing for information after a man spat at a train guard following a dispute over a railcard.
[NEXT_CONCEPT]
Seven young migrants have gone on trial in Germany, over a Christmas day attack on a homeless man which could have killed him.